Melhore as fórmulas IF e CHOOSE aninhadas

2

Recebo status semanais para nossos pedidos de serviço abertos como um arquivo CSV. Isso inclui códigos de status de três letras associados a diferentes etapas no processo de conclusão.

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

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

Como minha planilha atual funciona é 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 é de 16 pixels com:

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

Para cada código de status é atribuído um número de 1 a 16 que aparece na grade 16x [o número de ordens de serviço abertas].

A última coluna de é:

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

Por fim, isso alimenta meu rastreador com linhas semelhantes a: =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 se alimenta dos subtotais da calculadora de código de status.

Eu não posso ajudar que tem que haver uma maneira mais elegante e eficiente de fazer isso. Alguma percepção? Eu tentei usar a função = CHOOSE diretamente nos códigos do CSV, mas só funciona em valores numéricos. Eu incluí fotos de cada etapa, porque eu sinto que eu expliquei isso mal.

Calculadora de código CSV

Tracker

    
por Nate Marek 20.09.2016 / 08:18

2 respostas

1

Essa fórmula de escolha pode ser escrita como

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

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

    
por 20.09.2016 / 08:53
0

calculadora de códigos:

Em vez da tabela longa, você pode usar um único MATCH() :
=MATCH([@[SO CODES]],TableHelper[code list],0)

Rastreador

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

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

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

Otimização final:

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

I tried using the =CHOOSE function directly on the codes from the CSV, but it only works on numeric values

De fato, você pode alimentar os códigos diretamente, apenas use VLOOKUP() , algo assim:
=VLOOKUP(<code>,$J:$K,2,false)

Onde

  • <code> é um código para o qual você deseja obter a descrição
  • $J:$K são colunas de código e descrição de acordo com sua captura de tela
por 20.09.2016 / 09:11