Ich würde beginnen , Ihre durch die Optimierung O
, P
und Q
Formeln. Derzeit hast du
=IF(IFERROR(SEARCH("Brand is not valid", M42), "") <> "", "Brand", "")
IFERROR
ist eine großartige Funktion zum Anzeigen einer bereinigten Version eines berechneten Werts, bei dem es sich möglicherweise um einen Fehlercode handelt. Ich benutze es und empfehle es häufig in Antworten auf Super User. Wie du wahrscheinlich weißt,
IFERROR(calculated_value, default_value)
Kurzform für
IF(ISERROR(calculated_value), default_value, calculated_value)
Es
ist jedoch unnötig umständlich IFERROR
, eine bereinigte Version eines Werts zu erstellen
und diesen Wert dann zu testen, um etwas unter bestimmten Bedingungen zu tunIFERROR
. Die obige Formel kann vereinfacht werden
=IF(ISERROR(SEARCH("Brand is not valid", M42)), "", "Brand")
Und, wie Sie sicher wissen, SEARCH("Brand is not valid", M42)
Tests, um zu sehen, ob M42
enthält Brand is not valid
. Solange Column M
jedoch nur Ihre drei Fehlerzeichenfolgen enthalten kann, kann dies auf verkürzt werden
=IF(ISERROR(SEARCH("Brand", M42)), "", "Brand")
oder vereinfacht zu
=IF(M42 = "Brand is not valid", "Brand", "")
OK, jetzt werde ich die machen O
, P
und Q
Formeln ein wenig komplizierter:
O42
→ =IF($A42=$A41, O41, "") & IF(ISERROR(SEARCH("Brand", $M42)), "", "Brand")
P42
→ =IF($A42=$A41, P41, "") & IF(ISERROR(SEARCH("Product", $M42)), "", "Product")
Q42
→ =IF($A42=$A41, Q41, "") & IF(ISERROR(SEARCH("OEM", $M42)), "", "OEM")
Die Formel für O42
sagt:
Wenn dies die zweite oder dritte Zeile für diese ID (Spalte A
) ist, überprüfen Sie die Zelle über dieser (dh die Spaltenzelle O
für die vorherige Zeile), um festzustellen, ob wir bereits festgestellt haben, dass dieses Objekt eine ungültige Marke hat. Sehen Sie sich auch die Spalte M
für diese Zeile an, um festzustellen, ob dies der Fall ist Brand is not valid
. Verketten Sie dann die Ergebnisse.
Da eine eindeutige ID niemals zweimal mit demselben Fehler aufgelistet wird (richtig?), Sind diese beiden Unterergebnisse niemals beide nicht leer, sodass im Wesentlichen ein "ODER" ausgeführt wird:
Zeigen Sie den Wert an, Brand
ob diese Zeile ODER eine der vorherigen Zeilen für diese ID den ungültigen Markenfehler enthält.
Dies hat den Effekt oder Ziehen an den O
, P
und Q
Werte bis auf die letzte Zeile für jede ID:
Man beachte , daß Reihen 41, 44, 47 und 49 jeweils zeigt die Kurzformen aller Fehler, die auf ihre jeweiligen IDs in Spalten gelten O
, P
und Q
.
Ich habe Column R
genauso definiert wie Sie. Weitere Informationen
zum Entfernen der unerwünschten Schrägstriche finden Sie unter Generieren einer durch Kommas getrennten Liste von Zelleninhalten, ausgenommen Leerzeichen .
Wenn die gewünschte Verkettung nur in den Zeilen 41, 44, 47 und 49 ausreicht, sind Sie fertig. Andernfalls definieren Sie N42
als
=IF($A22=$A23, N23, R22)
oder
=IF($A22<>$A23, R22, N23)
Dies ist fast genau der gleiche Trick , den ich in Spalten verwendet O
, P
und Q
, aber in der entgegengesetzten Richtung:
Wenn dies die letzte Zeile für diese ID ist (dh wenn dies Zeile 41, 44, 47 oder 49 ist), verwenden Sie die Verkettung der Werte aus dieser Zeile (dies ist die vollständige Sammlung von Fehlercodes für diese ID). Andernfalls sehen Sie sich die Zelle unter dieser an (dh die Spaltenzelle N
für die nächste Zeile), die die richtige Antwort enthält.
Mit anderen Worten, die gewünschten Werte sickern für jede ID bis zur ersten Zeile.