Como usar o IF no MS Excel para obter um valor de coluna específico?

0

Eu tenho um conjunto de dados de doenças salvo na planilha do MS Excel, o formato dos dados é fornecido abaixo:

| Object Name | Symptom 1 | Symptom 2 | Symptom 3 |...| Symptom N | Disease | | ABC | 1 | 0 | 0 |...| n | XYZ | | ABC | 0 | 1 | 0 |...| n | XYZ | | ABC | 1 | 0 | 1 |...| n | YZX | | ABC | 1 | 1 | 0 |...| n | XYZ |

em que a primeira coluna está inserindo variável, ou seja, o nome de algum objeto e a coluna de saída, ou seja, a última coluna é um nome de doença. As colunas intermediárias são as colunas de sintomas para a doença específica desse objeto.

Agora, para cada linha na planilha, desejo obter o atributo de sintomas onde o valor é 1, ou seja, esse sintoma está presente, usando a coluna Doença como uma variável de decisão. A lógica é dada abaixo.

for each row in the sheet 
  -->  IF (Disease = XYZ)
  --> Get all the Symptoms variables where value is 1

O resultado desejado para as primeiras linhas é o seguinte:

Row 1 --> XYZ (Symptom1)
Row 2 --> XYZ (Symptom2)
Row 3 --> XYZ (Symptom1, Symptom3)
Row 4 --> XYZ (Symptom1, Symptom2)


Como posso fazer isso no MS Excel, usando a fórmula IF? Ajuda a este respeito será muito apreciada.

    
por Muhammad Toseef 17.04.2017 / 13:03

2 respostas

0

Se você puder pagar uma planilha vazia, aqui está um exemplo. Deixe Sheet1 ser a planilha principal e Sheet2 é uma vazia; os títulos dos sintomas estão em Sheet1!$C$4:$F$4 , os sinalizadores em Sheet1!C5:F8 .

Digite

=B5&IF(Sheet1!C5,","&Sheet1!C$4,"")

na célula C5 no Sheet2 e copie esta célula para preencher o bloco Sheet2!C5:F8 . A última coluna ( Sheet2!F5:F8 ) conterá as listas de sintomas por linha (com uma vírgula extra na frente).

Emseguida,bastaadicionarafórmula

=G5&"("&REPLACE(Sheet2!F5,1,1,"")&")"

na célula Sheet1!H5 no Sheet1 e copie para baixo na coluna.

Seoseubancodedadosformuitogrande,etaldesperdícionãoforumaopção,considereusar função VBA com modificações apropriadas.

Editar:

Algumas sugestões:

Se funcionar bem com registros de ~ 2000 mas não consegue lidar com todo o tamanho então pelo menos você pode dividir em pedaços.

A solução VBA também é uma alternativa possível.

Mais uma alternativa (OT) poderia ser usar Gnumeric . Pode ler / escrever arquivos excel , e sua função concatenate pode manipular intervalos corretamente então existe uma solução de fórmula de uma célula para o OP.

Existe também a possibilidade de criar um excel Add-on personalizado, mas parece que isso seria um exagero nesse caso.

    
por 17.04.2017 / 20:16
0

Acho que você pode usar uma função IF (AND. Escrevi o seguinte: = IF (E (H32 = 1, I32 = 1, J32 = 1), K32, "Sem Doença")

H32, I32, J32 todos tinham 1 ou 0 nele. K32 era a 'doença'.

Você também pode fazer algo assim:

= SE (H32 + I32 + J32 = 3, K32, K33)

k33 era "sem doença", enquanto as outras células eram as mesmas que as anteriores.

Isso ajuda?

    
por 17.04.2017 / 14:37