我在单元格 A1 中定义了一个数组常量为 {1,2,3}。这显示为“1”(数组中的第一个值)。
我想让公式 SUM(A1) 返回 6。但是,SUM 使用 A1 作为单单元数组,而不是 A1 中包含的数组常量 - 因此 SUM(A1) 返回 1。
同样,我希望 AVERAGE(A1) 返回 1 而不是 2。
简而言之,如何让 SUM(A1) 返回与 SUM({1,2,3}) 相同的值?
我不想将数组常量设为命名引用,因为我正在为每一行定义不同的数组常量。
感觉就像我被困在 C++ 中,没有解引用的方法!
这个简短的 VBA UDF 应该可以完成这项工作。
Public Function ToArray(rngCell As Range) As Variant
Dim sFormString As String
sFormString = rngCell.Formula
Dim adReturn() As Double
ReDim adReturn(1) As Double
If Not Len(sFormString) - 3 > 0 Then
ToArray = adReturn
Exit Function
Else
sFormString = Mid(sFormString, 3, Len(sFormString) - 3)
End If
Dim vTest As Variant
vTest = Split(sFormString, ",")
ReDim adReturn(LBound(vTest) To UBound(vTest)) As Double
Dim iArrayCounter As Integer
For iArrayCounter = LBound(vTest) To UBound(vTest)
adReturn(iArrayCounter) = vTest(iArrayCounter)
Next iArrayCounter
ToArray = adReturn
End Function
(例如,如果带大括号的字符串位于单元格 b2 中,则您需要在另一个单元格中写入 =sum(toarray(b2)) )
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)