Esta fórmula de matriz, preenchida com H2 na captura de tela abaixo, fornece os resultados mostrados.
=SUM(NOT(ISBLANK($B2:$G2))*TRANSPOSE(B$10:B$15))
Como esta é uma fórmula de matriz, ela deve ser digitada com CTRL Shift Enter , em vez de apenas Enter .
Comofunciona:NOT(ISBLANK($B2:$G2))
forneceumamatrizdevaloresTrue/False
comFalse
semprequeumacélulanesseintervaloestivervazia(consulteaNotaabaixo).SevocêdestacaressapartedafórmulanabarradefórmulasepressionarateclaF9,veráamatriz{TRUE,TRUE,FALSE,FALSE,FALSE,FALSE}
.(DigiteCTRL-Zparadesfazerisso).
(B$10:B$15)
éapenasumalistadosnúmerosnacoluna"Dados" e TRANSPOSE()
converte-os de uma matriz vertical para uma horizontal.
Na multiplicação, os valores True/False
são tratados como 1
e 0
, portanto, o resultado é uma matriz com o valor Data onde havia um x
e zero em outro lugar. Então, SUM()
apenas adiciona a matriz e retorna os totais conforme eles são preenchidos.
Editar:
OP adicionou a sua pergunta, dizendo que ele poderia ter valores de texto em B6:B10
e operá-los, não com SUM()
, mas outra função, possivelmente TEXTJOIN()
.
Para lidar com a possibilidade de valores não numéricos, esta expressão:
IF(NOT(ISBLANK($B2:$G2)),TRANSPOSE(B$10:B$15),)
retorna uma matriz com o valor "Dados" onde quer que haja um "x" e False
em outro lugar. Ele funciona corretamente para valores numéricos e de texto.
Incluindo o value_if_false
no IF()
(após a última vírgula), os valores de False
podem ser substituídos por 0
ou blank
ou o que possa ser exigido pela função que atua no array.
Notas:
-
ISBLANK()
deve realmente ser nomeadoISEMPTY()
, porque uma célula tem para estar realmente vazio paraISBLANK()
retornarTrue
. Se a célula contém uma fórmula, mas aparece em branco,ISBLANK()
retornará %código%.False
tem o mesmo problema, então se você tiver fórmulas nas células "em branco", você pode alterar o primeiro array para %código% - Se
ISTEXT()
não estivesse presente, a multiplicação (e a(($B2:$G2)="x")
função) daria uma matriz 2D, que ficaria confuso.
Espero que isso ajude e boa sorte.