Ich habe ein Arbeitsblatt mit Tausenden von Zeilen, die eine eindeutige ID A
und drei verschiedene Fehlercodes enthalten M
. Jede einzelne ID kann 1, 2 oder 3 Fehler aufweisen. Sie werden immer in der gleichen Reihenfolge sein.
Ich habe von Hand getippt und in N
was die gewünschte Ausgabe ist. Ich habe eine Formel wie diese in Spalten O, P, Q
mit dem Text des Fehlers geschrieben:
=IF(IFERROR(SEARCH("Brand is not valid", M42), "") <> "", "Brand", "")
Ich habe so etwas ausprobiert, R
aber es funktioniert aus offensichtlichen Gründen nicht richtig. Gibt es eine Möglichkeit, dies so zu tun, dass es so R
aussieht N
?
=CONCATENATE(O42,"/", P42,"/",Q42)
Wenn dies mit der Excel-Formel nicht möglich ist, gibt es vielleicht einen VBA-Weg?
CONCATENATE
Formel funktioniert ordnungsgemäß. In den anderen Zellen der Zeile befinden sich nur keine Daten (P42 und Q42 sind leer), um die gewünschten Ergebnisse zu erzielen.O, P, & OEM
in dieselbe Spalte zu gelangen? Werden sie immer in dieser Reihenfolge sein? Marke, Produkt, OEM? Oder könnte es eine andere Reihenfolge sein?Antworten:
OK, ich habe ein bisschen am Kopf gekratzt, aber ich habe es verstanden:
Spalten
O
,P
undQ
wie Sie sie haben, mit dem TitelBrand
,Product
&OEM
. Verwandeln Sie das Ganze in eine Tabelle mit Ctrl- T(nicht erforderlich, aber praktisch, und meine SpalteR
stützt sich darauf, aber Sie können Spaltenreferenzen verwenden, wenn Sie möchten)Spalte
R
:Spalte
S
:Leider scheint die einzige Möglichkeit, Tabellenreferenzen für eine andere Zeile zu verwenden
Offset
, die Verwendung zu sein. Um dies zu vereinfachen, habe ich mich wieder mit Zellreferenzen befasst. Das negiert irgendwie den coolen / praktischen Faktor, das Ganze überhaupt in einen Tisch zu verwandeln, aber was auch immer ...Und ... Hier ist ein Bild davon, wie es aussieht:
quelle
Are you a bot?
CAPCHA zum Ausfüllen, nachdem ich das eingereicht habe. Seltsam ...Ich würde beginnen , Ihre durch die Optimierung
O
,P
undQ
Formeln. Derzeit hast duIFERROR
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 werdenUnd, wie Sie sicher wissen,
SEARCH("Brand is not valid", M42)
Tests, um zu sehen, obM42
enthältBrand is not valid
. Solange ColumnM
jedoch nur Ihre drei Fehlerzeichenfolgen enthalten kann, kann dies auf verkürzt werdenoder vereinfacht zu
OK, jetzt werde ich die machen
O
,P
undQ
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: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:
Dies hat den Effekt oder Ziehen an den
O
,P
undQ
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
undQ
.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
alsoder
Dies ist fast genau der gleiche Trick , den ich in Spalten verwendet
O
,P
undQ
, aber in der entgegengesetzten Richtung:Mit anderen Worten, die gewünschten Werte sickern für jede ID bis zur ersten Zeile.
quelle