Recibo estados semanales de nuestras órdenes de trabajo abiertas como un archivo CSV. Esto incluye códigos de estado de 3 letras asociados con diferentes pasos del proceso de finalización.
Necesito poner definiciones en lenguaje sencillo en lugar de códigos de estado.
Mi hoja de cálculo hace esto automáticamente, pero siento que la hoja de cálculo que estoy haciendo ahora es realmente ineficiente. La hoja que hace esto, por sí sola, tiene más de 75 MB y atasca todo.
El funcionamiento de mi hoja actual es una cuadrícula de 16 columnas con los códigos de estado del CSV en [@[SO Codes] y una lista estática de los códigos en la Fila 1. Cada otra fila tiene 16 de ancho con:
=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.
Entonces, a cada código de estado se le asigna un número del 1 al 16 que aparece en la cuadrícula 16x [el número de órdenes de trabajo abiertas].
La última columna de es:
=SUBTOTAL(9,E2:T2)
=SUBTOTAL(9,E3:T3)
=SUBTOTAL(9,E4:T4)
etc.
Finalmente, eso ingresa a mi rastreador con líneas que se ven como:
=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))
Donde la columna L es la lista de definiciones de códigos de texto sin formato y J3 se alimenta de los subtotales de la calculadora de códigos de estado.
No puedo evitar pensar que tiene que haber una forma más elegante y eficiente de hacer esto. ¿Alguna idea? Intenté usar la función = ELEGIR directamente en los códigos del CSV, pero solo funciona con valores numéricos. He incluido imágenes de cada paso porque siento que lo he explicado mal.
Respuesta1
Esa fórmula de elección podría escribirse como
=Vlookup([@Status],$J$2:$L$17,3,False)
No estoy seguro de entender cuál es el resto del problema.
Respuesta2
calculadora de código:
En lugar de la tabla larga puedes usar una sola MATCH()
:
=MATCH([@[SO CODES]],TableHelper[code list],0)
Rastreador
Aquí no estoy seguro de haber entendido correctamente su fórmula original.
=CHOOSE([@Status],IF([@Status]=J2,L2),IF([@Status]=J3,L3)...
- Qué pasa si [@Status]<>J2
? ¿O es ese un escenario poco realista? En caso afirmativo, utilice una INDEX()
función simple:
=INDEX($L$2:$L$17,[@Status])
De lo contrario, especifique qué debe hacer su fórmula.
Optimización definitiva:
Nuevamente, si entiendes bien tu problema: ni siquiera necesitas las hojas dobles, solo una.
Intenté usar la función = ELEGIR directamente en los códigos del CSV, pero solo funciona con valores numéricos.
De hecho, puedes introducir los códigos directamente, simplemente usa VLOOKUP()
algo como esto:
=VLOOKUP(<code>,$J:$K,2,false)
Dónde
<code>
es un código del cual desea obtener la descripción$J:$K
son columnas de código y descripción según su captura de pantalla