代码之家  ›  专栏  ›  技术社区  ›  PhilChuang

Excel中的数组常量

  •  3
  • PhilChuang  · 技术社区  · 15 年前

    我在单元格A1中有一个数组常量定义为1,2,3。这显示为“1”(数组中的第一个值)。

    我希望公式和(A1)返回6。但是,sum将a1用作单单元数组,而不是a1中包含的数组常量,因此sum(a1)返回1。

    同样,我希望average(a1)返回1而不是2。

    所以简单地说,如何让sum(a1)返回与sum(1,2,3)相同的值?

    我不想使数组常量成为命名引用,因为我为每一行定义了不同的数组常量。

    感觉我被困在C++ W/O中去了!

    3 回复  |  直到 9 年前
        1
  •  2
  •   Henrik K    9 年前

    这个简短的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))。

        2
  •  1
  •   Joe Erickson    15 年前

    单元格仅限于单个数字、字符串、逻辑值或错误值。单个单元格不能包含数组。当公式“=1,2,3”在单个单元格公式中计算时,单元格将仅从数组中获取第一个值。

        3
  •  0
  •   Lance Roberts    15 年前

    您可以通过这样定义名称(例如:test),使数组常量成为命名数组常量:

    ={1,2,3}
    

    然后引用名称

    =SUM(test)