Xen*_*dra 1 vba excel-vba user-defined-functions
我已设法使用以下代码使函数工作(从另一个数组中减去一个数组并给出最大的差异):
WorksheetFunction.Max([Sheet1!A1:A5 - Sheet2!A1:A5])
Run Code Online (Sandbox Code Playgroud)
但是,我真的需要能够以这种方式引用范围:
WorksheetFunction.Max(Worksheets("Sheet1").Range("A1:A5") - Worksheets("Sheet2").Range("A1:A5"))
Run Code Online (Sandbox Code Playgroud)
我试过这个并没有用.为什么一种范围方法有效而另一种无效?
这[]
是评估的简写,它将返回一个数组.
因此要使用Range,需要明确使用Evaluate:
Application.Evaluate("MAX(" & Worksheets("Sheet1").Range("A1:A5").Address(1, 1, 1, 1) & "-" & Worksheets("Sheet2").Range("A1:A5").Address(1, 1, 1, 1) & ")")
Run Code Online (Sandbox Code Playgroud)
但是可以更快地将值加载到变量数组中,然后迭代它以找到MAX:
Dim Sht1 as variant
Sht1 = Worksheets("Sheet1").Range("A1:A5").Value
Dim Sht2 as Variant
Sht2 = Worksheets("Sheet2").Range("A1:A5").Value
Dim Mx as Double
Mx = -99999999
Dim i as Long
For i = Lbound(Sht1,1) to Ubound(sht1,1)
If sht1(i,1) - sht2(i,1) > Mx then Mx = sht1(i,1) - sht2(i,1)
Next i
Debug.Print Mx
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
31 次 |
最近记录: |