Pergunta

I têm uma constante de matriz definida na célula A1 como {1,2,3}. É exibido como "1" (o primeiro valor na matriz).

gostaria de ter a fórmula SUM (A1) retornar 6. No entanto, é SUM utilizando A1 como uma matriz unicelular, em vez do que a constante de matriz contida dentro A1 - e, por conseguinte, SUM (A1) retorna 1

Do mesmo modo, seria de esperar médio (A1) retorna um em vez de dois.

Então, simplesmente falando, como faço para obter SUM (A1) para retornar o mesmo valor que SUM ({1,2,3})?

Eu não quero fazer a constante de matriz uma referência chamado porque eu estou definindo uma constante matriz diferente para cada linha.

Parece que eu estou preso em C ++ w / o uma maneira de excluir a referência!

Foi útil?

Solução

Esta curta VBA UDF deve fazer o trabalho.

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

(Se a corda com as chaves é na célula B2, por exemplo, tudo que você precisa escrever em outra célula é = SUM (ToArray (b2)))

Outras dicas

A célula é limitado a um número único, corda, valor lógico ou de erro. Uma única célula não pode conter uma matriz. Quando a fórmula "= {1,2,3}" é avaliada em uma única fórmula da célula, a célula terá apenas o primeiro valor da matriz.

Você pode fazer a matriz constante uma constante matriz chamada, através da definição de um nome (por exemplo: test) assim:

={1,2,3}

seguida, referenciar o nome

=SUM(test)
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top