wenn möglich, würde ich gerne alles entfernen und die Bestellnummer erhalten. Das Problem ist: Der Speicherort der Bestellnummer und manchmal beginnt sie mit A
oder 1
.
- Zellenbeispiel A1:
{"Ref":"bad order","OrderId":"ABSER27"}
- Zellenbeispiel A2:
{"OrderId":"ABSER27"}
- Zellenbeispiel A3:
{"order_id":"12345678","customer_email":"[email protected]"}
- Gewünschtes Ergebnis: B1 =
ABSER27
- Gewünschtes Ergebnis: B3 =
ABSER27
- Gewünschtes Ergebnis: B3 =
12345678
Antwort1
Mit der Excel-Funktion „Text in Spalte“ wird das Leben einfacher.
Schritt 1 - Die Saiten in Spalten zerlegen
Entfernen Sie zunächst die führenden {
und nachfolgenden }
. Sie können dies mit der Funktion „replace“ oder, wenn Sie dies möchten, mit einer Funktion tun =MID(A1,2,LEN(A1)-2)
.
Das Ergebnis sind Quelldaten wie:
Wählen Sie als Nächstes Spalte A (ohne { }
) aus und wählen Sie im Menüband Daten > Datentools > Text in Spalten. Verwenden Sie die folgenden Optionen:
Dann werden Ihnen die Informationen übersichtlich in 4 Spalten präsentiert:
Schritt 2 - Bestellnummer aus den Spalten auswählen
Danach können Sie tun, was Sie wollen, um die Bestellnummer abzurufen. Eine einfache Möglichkeit wäre, eine Formel beispielsweise in Spalte G einzugeben, wobei Zelle G1 die folgende Formel enthält:
=INDIRECT("RC"&MATCH("order*id",A1:F1,0)+1,FALSE)
Da „OrderId“ auch die Form „order_id“ aus dem Beispiel haben könnte, verwenden wir *
für die Übereinstimmung ein Platzhalterzeichen. Die Formel holt dann die Zelle rechts neben „OrderId“.
Antwort2
Für diese Art von Problemen verwende ichRegex Suchen/Ersetzen-Add-In
(Ich bin in keiner Weise damit verbunden, nur ein begeisterter Benutzer)
Dabei können Sie reguläre Ausdrücke verwenden, zB:
=RegExReplace(UPPER(A1),".*ORDER_?ID"":""([^""]+)"".*","$1")
Antwort3
Verwenden Sie in Zelle B2 die Funktion Mid
Text =A2
Startnummer = Verwenden Sie die Suchfunktion (bei der Suche wird die Groß-/Kleinschreibung nicht beachtet, bei Suchen hingegen schon), um die Position der „ID“ in Zelle A2 beginnend bei Position 1 zu lokalisieren und fügen Sie dann die Anzahl der Zeichen zur Bestellnummer hinzu.
Die Anzahl der Zeichen ist die Differenz zwischen der Startnummer und der nächsten Anführungszeichenposition (ASCII-Zeichen 34).
=MID(A2,SEARCH("id",A2,1)+5,(FIND(CHAR(34),A2,(SEARCH("id",A2,1)+5))-(SEARCH("id",A2,1)+5)))
BEARBEITEN, um zusätzliche „ID/ID“ im E-Mail-Feld oder in der Bestell-ID zuzulassen, ohne dass ein Add-In oder VBA erforderlich ist
Fügen Sie wahre und falsche MID-Anweisungen in eine IF-Anweisung ein, die überprüft, ob mehr als eine ID vorhanden ist und ob die E-Mail-Adresse nicht das erste durch Kommas getrennte Feld ist.
=IF(
AND((LEN(A2)-LEN(SUBSTITUTE(UPPER(A2),("ID"),"")))/LEN("ID")>1,ISERROR(FIND("@",LEFT(A2,FIND(",",A2)-1),1))=FALSE),
MID(A2,
FIND("~",SUBSTITUTE(UPPER(A2),"ID","~",2),1)+5,
FIND(CHAR(34),A2,FIND("~",SUBSTITUTE(UPPER(A2),"ID","~",2),1)+5)-(FIND("~",SUBSTITUTE(UPPER(A2),"ID","~",2),1)+5)
),
MID(A2,
SEARCH("ID",A2,1)+5,
(FIND(CHAR(34),A2,(SEARCH("ID",A2,1)+5))-(SEARCH("ID",A2,1)+5))
)
)
Antwort4
Basierend auf den von Ihnen angegebenen Informationen – die Bestellnummer läuft vom ersten A
oder 1
im Feld bis zum ersten folgenden "
(Anführungszeichen) – ist dies nicht schwierig. Am einfachsten ist es, wenn wir einige „Hilfsspalten“ verwenden:
C1
→=IFERROR(FIND("A",$A1), LEN($A1)+1)
D1
→=IFERROR(FIND("1",$A1), LEN($A1)+1)
E1
→=MIN($C1,$D1)
F1
→=FIND("""", $A1, $E1)
C1
und D1
sucht das erste A
bzw. 1
in Zelle A1
. Wenn keines vorhanden ist, FIND
gibt einen Fehler zurück, und mit IFERROR
setzen wir den Wert auf die Länge von A1
plus eins; also den Offset des nächsten Zeichens nach dem letzten Zeichen.
E1
ist das kleinere davon; wenn also mindestens ein A
oder 1
gefunden wurde, E1
zeigt auf das erste. Wenn keine vorhanden sind, ist es ebenfalls Länge+1.
Und F1
findet nun das erste "
nach dem obigen. Wenn kein vorhanden ist "
, ist dies ein Fehler. Wenn kein A
oder ein vorhanden war 1
, E1
ist die Länge A1
+1 und somit F1
ebenfalls ein Fehler.
Also endlich haben wir
B1
→=IF(ISERROR($F1), "ERROR", MID($A1, $E1, $F1-$E1))
Wenn F1
ein Fehler auftritt, zeigen Sie einfach einen ERROR
Indikator an. Andernfalls extrahieren Sie die Teilzeichenfolge aus der Mitte von A1
, beginnend an der Position von A
oder 1
und mit einer Länge bis zum begrenzenden (dieses jedoch nicht einschließenden) "
.