gpt4 book ai didi

vba - 运行时错误 '13' : Type mismatch on WorksheetFunction. CountIf 当实际的 Excel 公式(具有类似语法)完美运行时

转载 作者:行者123 更新时间:2023-12-04 19:49:52 25 4
gpt4 key购买 nike

好的,所以在单元格 B1 中,我有以下公式(不是数组公式),它在 Excel 中完美运行:

SUMPRODUCT(1/COUNTIF(A1:A4,A1:A4))

这标识了一系列单元格中的唯一值。所以,如果 A1 = "A"、A2 = "B"、A3 = "B"和 A4 = "C",则此公式的结果为 3。这是正确的。但是,如果我尝试在 VBA 中复制完全相同的函数,如下所示...:

Range("B1") = WorksheetFunction.SumProduct(1 / WorksheetFunction.CountIf(Range("A1:A4"), Range("A1:A4")))

我收到“运行时错误‘13’:类型不匹配”错误。

我已将其缩小到 VBA 不喜欢我使用多单元格范围(即 A1:A4)而不是我的单个单元格范围(即 A1)这一事实CountIf.

我已经编写了程序来满足我正在寻找的最终结果,但它并不像我能让上面的代码工作时那样优雅。谁能告诉我我可能做错了什么,或者这根本不可能吗?

最佳答案

这是我设法实现的最接近的 VBA:

Sub TestMe
Debug.Print Application.SumProduct(1 / Evaluate("=COUNTIF(A1:A4,A1:A4)"))
End Sub

在 Excel 的 CountIf() 公式中,您使用的是数组公式,按 CTRLSHIFTENTER而且 WorksheetFunction 似乎无法复制它。但是,Evaluate() 可以毫无问题地执行此操作。

关于vba - 运行时错误 '13' : Type mismatch on WorksheetFunction. CountIf 当实际的 Excel 公式(具有类似语法)完美运行时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48514622/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com