excel - UDF中两个数组之间的最大差异
问题描述
我已经设法使用以下代码使函数正常工作(从另一个数组中减去一个数组,并给出最大的差异):
WorksheetFunction.Max([Sheet1!A1:A5 - Sheet2!A1:A5])
但是,我确实需要能够以这种方式引用范围:
WorksheetFunction.Max(Worksheets("Sheet1").Range("A1:A5") - Worksheets("Sheet2").Range("A1:A5"))
我已经尝试过了,但它不起作用。为什么一种范围方法有效而另一种无效?
解决方案
是[]
Evaluate 的简写,它将返回一个数组。
因此,要使用 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) & ")")
但是将值加载到变量数组中然后迭代它以找到 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
推荐阅读
- java - 检查表达式是否为有效公式
- java - Java Thread.yield() 奇怪的行为
- css - 如何将带有内容的 Bootstrap 容器容纳在带有内容的流体 Bootstrap 容器中?
- sql-server - 尽管在执行时声明了 OUTPUT 参数,存储过程仍返回 NULL
- react-native - 在 react native 上为基于文档的应用程序实现什么结构
- c - 如何使指针结构成员表现得像数组?
- reactjs - 商店状态改变时反应/redux工具包useSelector不更新
- reactjs - 在挂载时反应 useEffect 语法原因
- mongodb - mongod服务错误的原因是什么?
- reactjs - 如何在 react-chartjs-2 的条形顶部显示数据值?