Combinando múltiplas colunas com uma condição

Combinando múltiplas colunas com uma condição

Eu tenho um intervalo de colunas (A1,B1,C1,D1). Essas colunas possuem valores de 1 a 20. Tenho uma fórmula em F1 assim:

Código:

=if($A1>7,"U",if($B1>7,"X",If($C1>7,"Y",if($D1>7,"Z",""))))

Esta fórmula coloca o valor de U,X,Y e Z se alguma dessas células (A1,B1,C1 ou D1) for maior que 7.

mas não funciona se houver duas células maiores que> 7.

O que devo fazer, então se houver duas colunas maiores que 7, o resultado final será um par de U,X,Y ou Z (separados por vírgula).

Obrigado.

Responder1

Isso pode ser feito com uma fórmula, mas é bastante longa e o VBA é provavelmente uma solução melhor. Além disso, isso não resolverá o possível caso em que você temtrêsvalores > 7. Mas vou mostrar o método da fórmula de qualquer maneira.

Vamos começar com o caso mais simples onde existe apenas uma célula > 7:

insira a descrição da imagem aqui

A fórmula em F1 é:

=IF(COUNTIF($A$1:D$1,">7")>1,"Double",IF($A1>7,"U",IF($B1>7,"X",IF($C1>7,"Y",IF($D1>7,"Z","")))))

A parte COUNTIF() conta o número de células no intervalo A1:D1 que são maiores que 7. Se esse total for maior que 1, IF() retorna "Double", que é apenas um espaço reservado para a fórmula maior que vem mais tarde. Se o total não for maior que 1, a fórmula usará sua instrução IF() aninhada para exibir o código da célula > 7.

Para o caso em que duas células são > 7, um IF() aninhado não funcionará. Precisamos saber quais colunas são > 7. Se tivermos esses dados,

insira a descrição da imagem aqui

Primeiro, construímos um array que lista as colunas > 7. Esta expressão (A1:D1>7)*COLUMN(A1:D1)faz isso. A primeira parte (A1:D1>7)pergunta quais células são> 7 e avalia o array {TRUE,FALSE,TRUE,FALSE}. A segunda parte são os números das colunas de A1:D1 ou {1,2,3,4}. Multiplicar essas duas matrizes faz com que os valores lógicos TRUE e FALSE sejam convertidos em 1 e 0, então o resultado é a matriz {1,0,3,0} que são os números das colunas que possuem valor > 7.

Agora podemos usar esses números para pesquisar os códigos das colunas usando INDEX():

INDEX({"U","X","Y","Z"},LARGE((A1:D1>7)*COLUMN(A1:D1),2))

Aqui LARGE() retorna o segundo maior valor na matriz de números de colunas > 7 (que é 1), e INDEX() usa isso para retornar o primeiro elemento na matriz de letras - U.

Da mesma forma, esta expressão obtém os códigos correspondentes aos números da segunda e da primeira coluna maiores separados por vírgula:

INDEX({"U","X","Y","Z"},LARGE((A1:D1>7)*COLUMN(A1:D1),2))&","&INDEX({"U","X","Y","Z"},LARGE((A1:D1>7)*COLUMN(A1:D1),1)

Agora substituímos tudo isso na primeira equação acima, substituindo “Duplo”. Esta fórmula em F1 é uma fórmula de matriz e deve ser inserida comCtrlShiftEnter

=IF(COUNTIF($A$1:D$1,">7")>1,INDEX({"U","X","Y","Z"},LARGE((A1:D1>7)*COLUMN(A1:D1),2))&","&INDEX({"U","X","Y","Z"},LARGE((A1:D1>7)*COLUMN(A1:D1),1)),IF($A1>7,"U",IF($B1>7,"X",IF($C1>7,"Y",IF($D1>7,"Z","")))))

Eu disse que essa fórmula seria "bastante longa". Eu espero que isso ajude.

Responder2

Aqui estão algumas outras opções que encontrei alternativas às fórmulas acima:

=IFERROR(LEFT(IF($A1>7,"U, ","")&IF($B1>7,"X, ","")&IF($C1>7,"Y, ","")&IF($D1>7,"Z, ",""),(COUNTIF($A1:$D1,">7")-1)*3+1),"")


{=TEXTJOIN(",",TRUE,IF(A1:D1>7,MID("UXYZ",COLUMN(A1:D1)-COLUMN(A1)+1,1),""))}


=MID(IF($A1>7,", U","")&IF($B1>7,", X","")&IF($C1>7,", Y","")&IF($D1>7,", Z",""),3,99)

Se você tiver fórmulas retornando "" :

=MID(IF(N($A1)>7,", U","")&IF(N($B1)>7,", X","")&IF(N($C1)>7,", Y","")&IF(N($D1)>7,", Z",""),3,99)

Tive que postar uma segunda resposta porque essas fórmulas não ficam bem no comentário.

informação relacionada