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.
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)
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:$K
são colunas de código e descrição de acordo com sua captura de tela