首页 文章

Excel中的数组常量

提问于
浏览
3

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

我希望公式SUM(A1)返回6.但是,SUM使用A1作为单细胞数组,而不是A1中包含的数组常量 - 因此SUM(A1)返回1 .

同样,我希望AVERAGE(A1)返回1而不是2 .

简单来说,如何让SUM(A1)返回与SUM({1,2,3})相同的值?

我不想让数组常量为命名引用,因为我为每一行定义了一个不同的数组常量 .

感觉就像我被卡在了一个无法取消引用的方式!

3 回答

  • 0

    这个简短的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,2,3}”时,单元格将仅获得数组中的第一个值 .

  • 1

    您可以通过定义名称(例如:test)来使数组常量为命名数组常量,如下所示:

    ={1,2,3}
    

    然后引用这个名字

    =SUM(test)
    

相关问题