Melhore as fórmulas IF e CHOOSE aninhadas

Melhore as fórmulas IF e CHOOSE aninhadas

Recebo status semanais de nossas ordens de serviço abertas como um arquivo CSV. Isso inclui códigos de status de três letras associados a diferentes etapas do processo de conclusão.

Preciso colocar as definições em linguagem simples no lugar dos códigos de status.

Minha planilha faz isso automaticamente, mas sinto que a planilha que estou fazendo agora é realmente ineficiente. A planilha que faz isso, por si só, tem mais de 75 MB e atrapalha tudo.

O funcionamento da minha planilha atual é uma grade de 16 colunas com os códigos de status do CSV em [@[SO Codes] e uma lista estática dos códigos na linha 1. Cada outra linha tem 16 linhas com:

=IF([@[SO Codes]]=Table3[[#Headers],[AA]],1,0)
=IF([@[SO Codes]]=Table3[[#Headers],[CA]],2,0)
=IF([@[SO Codes]]=Table3[[#Headers],[CAN]],3,0)
etc.

Assim, cada código de status recebe um número de 1 a 16 que aparece na grade 16x [o número de ordens de serviço abertas].

A última coluna é:

=SUBTOTAL(9,E2:T2)
=SUBTOTAL(9,E3:T3)
=SUBTOTAL(9,E4:T4)
etc.

Finalmente, isso alimenta meu rastreador com linhas que se parecem com: =CHOOSE([@Status],IF([@Status]=J2,L2),IF([@Status]=J3,L3),IF([@Status]=J4,L4),IF([@Status]=J5,L5),IF([@Status]=J6,L6),IF([@Status]=J7,L7),IF([@Status]=J8,L8),IF([@Status]=J9,L9),IF([@Status]=J10,L10),IF([@Status]=J11,L11),IF([@Status]=J12,L12),IF([@Status]=J13,L13),IF([@Status]=J14,L14),IF([@Status]=J15,L15),IF([@Status]=J16,L16),IF([@Status]=J17,L17))

Onde a coluna L é a lista de definições de código de texto simples e J3 alimenta os subtotais da calculadora de código de status.

Não posso evitar que haja uma maneira mais elegante e eficiente de fazer isso. Alguma ideia? Tentei usar a função =CHOOSE diretamente nos códigos do CSV, mas ela só funciona em valores numéricos. Incluí fotos de cada etapa, porque sinto que expliquei mal.

Calculadora de código CSV insira a descrição da imagem aqui

Rastreador insira a descrição da imagem aqui

Responder1

Essa fórmula Choose poderia ser escrita como

=Vlookup([@Status],$J$2:$L$17,3,False)

Não tenho certeza se entendi qual é o resto do problema.

Responder2

calculadora de código:

Em vez da tabela longa você pode usar uma única MATCH():
=MATCH([@[SO CODES]],TableHelper[code list],0)
insira a descrição da imagem aqui

Rastreador

Aqui não tenho certeza se entendi sua fórmula original corretamente.

=CHOOSE([@Status],IF([@Status]=J2,L2),IF([@Status]=J3,L3)...- O que acontece se [@Status]<>J2? Ou esse é um cenário irrealista? Se sim, basta usar uma INDEX()função simples:
=INDEX($L$2:$L$17,[@Status])

Caso contrário, especifique o que sua fórmula deve fazer.

Otimização final:

Novamente, se você entende bem o seu problema: você nem precisa das folhas duplas, apenas de uma.

Tentei usar a função =CHOOSE diretamente nos códigos do CSV, mas só funciona em valores numéricos

Na verdade, você pode alimentar os códigos diretamente, basta usar VLOOKUP()algo assim:
=VLOOKUP(<code>,$J:$K,2,false)

Onde

  • <code>é um código para o qual você deseja obter a descrição
  • $J:$Ksão colunas de código e descrição de acordo com sua captura de tela

informação relacionada