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/FalsecomFalsesemprequeumacé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%.Falsetem 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.
