Estou tentando somar valores de uma tabela onde referências de linha e coluna são geradas dinamicamente a partir de strings concatenadas em células separadas. Especificamente, preciso:
- Divida e combine os valores em uma célula (BO28) que contém referências de linhas concatenadas (por exemplo, "Simulação de validação de conversão de dados 1, Validação do plano de transição") para linhas na tabela.
- Divida e combine os valores em outra célula (BP28) que contém cabeçalhos de coluna concatenados (por exemplo, "Jane Smith, Emily Force") com os cabeçalhos de coluna na tabela.
- Some os valores de intersecção de cada combinação de correspondências de linha e coluna.
Na minha fórmula, quero somar as seguintes interseções:
"Simulação de validação de conversão de dados 1" com "Jane Smith" "Simulação de validação de conversão de dados 1" com "Emily Force" "Validação do plano de transição" com "Jane Smith" "Validação do plano de transição" com "Emily Force"
Então, o resultado esperado deveria ser 80 + 40 + 80 + 40 = 240
. No entanto, estou recebendo um erro #VALUE! quando tento aplicar esta fórmula:
=SUMPRODUCT(
ISNUMBER(MATCH(BN2:BN10, TEXTSPLIT(BN25, ", "), 0)) *
ISNUMBER(MATCH(BN1:BU1, TEXTSPLIT(BN26, ", "), 0)) *
BN2:BU10
)
Usei TEXTSPLIT para quebrar as strings concatenadas em BO28 e BP28 em valores individuais. Apliquei MATCH para encontrar as respectivas linhas e colunas, usei INDEX para retornar os valores de intersecção. Envolvi tudo em SUMPRODUCT para manipular a lógica do array.
Apesar de seguir essa abordagem, continuo recebendo um erro #VALUE! e não sei onde está o problema. (Por favor, me avise se eu precisar fornecer o arquivo Excel). Obrigado.
Aqui está uma abordagem um pouco diferente:
Você precisa comparar cabeçalhos de dados vertical e horizontalmente. Então use
SUMPRODUCT()
para somar valores correspondentes que combinam com cabeçalhos de coluna e cabeçalho de linha. Tente-Outra maneira
=XMATCH(TRIM(TEXTSPLIT(A12,",")),$A$2:$A$6)
para encontrar nomes de cursos.=XMATCH(TRIM(TEXTSPLIT(A13,",")),$B$1:$E$1)
para encontrar os nomes de usuários.Adicionei TRIM para o caso de haver um espaço depois do
,
.=INDEX($B$2:$E$6,<course names formula>,<user names formula>)
para retornar as interseções.Junte tudo e envolva em uma fórmula SUM:
Com
INDEX
eMATCH
sem necessidade de lidar com cabeçalhos. TRIM remove espaços desnecessários que desorientam as funções.=SUMPRODUCT(INDEX(A1:G8,MATCH(TRANSPOSE(TRIM(TEXTSPLIT(A12,","))),A1:A8,0),MATCH(VALUE(TRIM(TEXTSPLIT(A13,","))),A1:G1,0)))