Qual é a melhor alternativa para instruções IF aninhadas neste exemplo?

Qual é a melhor alternativa para instruções IF aninhadas neste exemplo?

Qual seria a melhor maneira (mais fácil de ler e manter e menos intensiva em recursos) de fazer o que preciso, em vez de instruções if aninhadas? insira a descrição da imagem aqui

As fórmulas nas 4 colunas da direita são todas iguais, apenas se referem a partes diferentes de guias diferentes, que funcionam exatamente da mesma maneira. A coluna Email Inicial Enviado é escolhida pelo usuário (validação de dados). A fórmula destacada é:

 =IF(OR([Initial Email Sent]="on hold",[Initial Email Sent]="not applicable"),[@[Initial Email
 Sent]],IF(COUNTIF(a414engagement[Status],"<>Not Applicable")=0,"Not
 Applicable",(IF((COUNTIF(a414engagement[Status],"Not
 Started")+(COUNTIF(a414engagement[Status],"In
 Progress"))=0),"Completed",(IF(COUNTIF(a414engagement[Status],"In
 Progress")+(COUNTIF(a414engagement[Status],"Completed"))>0,"In
 Progress","Not Started"))))))

Um pouco de boca cheia. Refere-se a parte da guia A414, que se parece com isto: insira a descrição da imagem aqui

O objetivo da fórmula:

  1. Se o e-mail inicial enviado nesta linha fornão aplicávelesta célula deveria dizernão aplicável.
  2. Se o e-mail inicial enviado forem esperaesta célula deveria dizerem espera

Todas as outras funções estão relacionadas ao que está na planilha de destino, não à planilha de visão geral:

  1. Se todos os elementos estiverem marcadosnão foi iniciado, a célula A414 na visão geral deve dizernão foi iniciado
  2. Se todos os elementos estiverem marcadosconcluído, a célula de visão geral deve dizerconcluído.
  3. Em qualquer outra combinação (por exemplo, todosem andamento, metadeconcluído& metadenão foi iniciado) a célula de visão geral deve dizerem andamento.

Responder1

Sua fórmula não cobre totalmente sua descrição. Aqui está uma fórmula para o cenário que você descreveu:

=IF( OR( [Initial Email Sent]="on hold", [Initial Email Sent]="not applicable" ), [@[Initial Email Sent]], IF( COUNTIF( a414engagement[Status], "<>Not Started" )=0, "Not Started", IF( COUNTIF( a414engagement[Status], "<>Completed" )=0, "Completed", "In progress" ) ) )

Ou talvez mais fácil de entender:

=IF(
    OR(
        [Initial Email Sent]="on hold",
        [Initial Email Sent]="not applicable"
    ),
    [@[Initial Email Sent]],
    IF(
        COUNTIF(
            a414engagement[Status],
            "<>Not Started"
        )=0,
        "Not Started",
        IF(
            COUNTIF(
                a414engagement[Status],
                "<>Completed"
            )=0,
            "Completed",
            "In progress"
        )
    )
)

O truque aqui é, em vez de contar todos os que "não foram iniciados", você procura 0 ocorrências em que a célula não "não foi iniciada".

informação relacionada