Verbessern Sie verschachtelte IF- und CHOOSE-Formeln

Verbessern Sie verschachtelte IF- und CHOOSE-Formeln

Ich erhalte wöchentlich Statusinformationen zu unseren offenen Arbeitsaufträgen als CSV-Datei. Diese enthält 3-stellige Statuscodes, die den verschiedenen Schritten im Abschlussprozess zugeordnet sind.

Ich muss die Definitionen im Klartext anstelle der Statuscodes einfügen.

Meine Tabelle macht das automatisch, aber ich habe das Gefühl, dass die Tabelle, mit der ich es gerade mache, wirklich ineffizient ist. Das Blatt, das das macht, ist allein über 75 MB groß und verlangsamt das Ganze.

Mein aktuelles Blatt besteht aus einem 16-Spalten-Raster mit den Statuscodes aus der CSV-Datei unter [@[SO-Codes] und einer statischen Liste der Codes in Zeile 1. Jede andere Zeile hat eine Breite von 16 Spalten und Folgendes:

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

Daher wird jedem Statuscode eine Nummer von 1 bis 16 zugewiesen, die im Raster 16 x [Anzahl der offenen Arbeitsaufträge] angezeigt wird.

Die letzte Spalte lautet:

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

Das wird schließlich in meinen Tracker eingespeist und enthält Zeilen, die etwa so aussehen: =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))

Wobei Spalte L die Liste der Klartextcodedefinitionen ist und J3 die Zwischensummen aus dem Statuscoderechner bezieht.

Ich kann nicht anders, als zu sagen, dass es einen eleganteren und effizienteren Weg geben muss, dies zu tun. Irgendeine Erkenntnis? Ich habe versucht, die Funktion =CHOOSE direkt auf die Codes aus der CSV-Datei anzuwenden, aber sie funktioniert nur bei numerischen Werten. Ich habe Bilder von jedem Schritt beigefügt, weil ich das Gefühl habe, dass ich das schlecht erklärt habe.

CSV-Code-Rechner Bildbeschreibung hier eingeben

Tracker Bildbeschreibung hier eingeben

Antwort1

Diese Formel könnte folgendermaßen geschrieben werden:

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

Ich bin nicht sicher, ob ich das restliche Problem verstehe.

Antwort2

Code-Rechner:

Anstelle der langen Tabelle können Sie auch eine einzelne verwenden MATCH():
=MATCH([@[SO CODES]],TableHelper[code list],0)
Bildbeschreibung hier eingeben

Tracker

Hier bin ich mir nicht sicher, ob ich Ihre ursprüngliche Formel richtig verstehe.

=CHOOSE([@Status],IF([@Status]=J2,L2),IF([@Status]=J3,L3)...- Was passiert, wenn [@Status]<>J2? Oder ist das ein unrealistisches Szenario? Wenn ja, dann verwenden Sie einfach eine einfache INDEX()Funktion:
=INDEX($L$2:$L$17,[@Status])

Andernfalls geben Sie bitte an, was Ihre Formel tun soll.

Ultimative Optimierung:

Noch einmal, wenn Sie Ihr Problem richtig verstehen: Sie brauchen nicht einmal die doppelten Laken, sondern nur eines.

Ich habe versucht, die Funktion =CHOOSE direkt auf die Codes aus der CSV-Datei anzuwenden, aber sie funktioniert nur bei numerischen Werten

Tatsächlich können Sie die Codes direkt eingeben. Verwenden Sie dazu einfach VLOOKUP()etwa Folgendes:
=VLOOKUP(<code>,$J:$K,2,false)

Wo

  • <code>ist ein Code, für den Sie die Beschreibung erhalten möchten
  • $J:$Ksind Code- und Beschreibungsspalten gemäß Ihrem Screenshot

verwandte Informationen