As constantes de matriz em Excel
-
12-09-2019 - |
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!
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)