我想使用数组公式(需要在工作表中通过Ctrl + Shift + Enter输入的公式),而不使用Range.FormulaArray。
您认为有可能吗? 我特别想要的公式是:
hello = WorksheetFunction.SMALL(WorksheetFunction.IF(MyRange<>0,MyRange),n)
谢谢大家的帮助。
答案 0 :(得分:0)
将数组与0比较在VBA中无效,但是您可以Evaluate
(对于错误值,hello As Variant
):
hello = Sheet1.Evaluate("Small(If(" & MyRange.Address & "<>0, " & MyRange.Address & "), 2)")
答案 1 :(得分:0)
我认为您不能在VBA中将IF
用作工作表函数。
但是,如果您有这个:
您可以这样做:
Sub tester()
Dim r, i
r = ActiveSheet.Evaluate("IF(A1:A10=0,FALSE,A1:A10)")
For i = LBound(r) To UBound(r)
Debug.Print i, Application.Small(r, i)
Next i
End Sub
得到这个:
1 1
2 2
3 3
4 5
5 6
6 7
7 8
8 9
9 Error 2036
10 Error 2036
要翻译您发布的代码行:
hello = Application.Small(ActiveSheet.Evaluate("IF(A1:A10=0,FALSE,A1:A10)"), n)