
Ich habe eine xls-Spalte mit folgender Vorlage:
Model : QE85Q80T,Diagonala cm / inch : 216 cm / 85 inch,Smart TV : Da,Format : Ultra HD 4K,Tip ecran : QLED,Rezolutie (pixeli) : 3840 x 2160,Tuner Digital : Da (DVB-T2 / C / S2) x 2,Difuzor integrat : 60 W,Wireless : Da,Ethernet : Da,Iesire audio digitala (optica) : x 1,CI (Slot) : PLUS,USB 2.0 : x 2,HDMI : x 4,Culoare : Negru,Putere consumata (W) : 257,Dimensiuni cu stand (mm) : 1892.8 x 1163.1 x 338.8,Greutate (Kg) : 50.1
Bitte beachten Sie die Variablen: „Diagonale cm/Zoll“, „Smart TV“, „Format“ und so weiter...
Alle können unterschiedliche Werte haben.
Was ich versuche zu erreichen, ist, in einer anderen Zelle den Wert zwischen "Diagonale cm / Zoll:" und zuerst "," - in diesem Fall wäre der Wert "216 cm / 85 Zoll".
Dasselbe in einer anderen Zelle mit dem Wert zwischen "Smart-TV:" und zuerst "," - der Wert wäre "Da" und so weiter für den Rest …
Nach mehreren Suchen bei Google bin ich auf die Formel gestoßen:
=MITTEL(F2,SUCHEN("Diagonale cm / Zoll:",F2)+3,SUCHEN(",",F2)-SUCHEN("Diagonale cm / Zoll:",F2)-4)
Das Problem ist, dass es mir nichts zurückgibt.
Was mache ich falsch?
Antwort1
Antwort2
Nun, das ist hässlich und funktioniert, aber ich bin mir nicht sicher, wie es sich an Ihre Bedürfnisse anpassen lässt. Ich denke, es funktioniert, wenn Sie Referenzen haben. Hier ist jedenfalls die Formel:
=MID(B2,(SEARCH("Diagonala cm / inch :",B2)+LEN("Diagonala cm / inch :")),(SEARCH(",",B2,SEARCH("Diagonala cm / inch :",B2))-(SEARCH("Diagonala cm / inch :",B2)+LEN("Diagonala cm / inch :"))))
Und so bin ich darauf gekommen:
Im Grunde liefert die Formel die gleichen Ergebnisse wie
=mid(b2,39,17)
Antwort3
Als mögliche Vorgehensweise bietet sich vielleicht folgender Ansatz an:
=LET(SearchCell,A1, StartingString,"Diagonala cm / inch : ", EndingString,",", MID(SearchCell, FIND(StartingString,SearchCell) + LEN(StartingString), FIND(EndingString,SearchCell,1+FIND(StartingString,SearchCell)) - (FIND(StartingString,SearchCell)+LEN(StartingString)) ) )
(Mir gefällt Isolated
die Verwendung von , LEN()
um die Festcodierung der Zeichenfolgenlänge zu vermeiden. Man würde sie natürlich kennen, sodass es kein Problem wäre, aber hier endet es sozusagen und es lässt sich nicht leicht auf eine allgemeinere Lösung erweitern, die man vielleicht erreichen möchte, nachdem man die Grundformel geschrieben und eine Weile lang verwendet hat. Upgrades sollten nach Möglichkeit unterstützt werden!)
Der Ansatz besteht darin, den Startpunkt des gewünschten Ergebnisses zu finden, dann den Endpunkt und damit die Anzahl der erforderlichen Zeichen aus der Eingabezeichenfolge. Daher muss FIND()
die Länge der Zielzeichenfolge hinzugefügt werden. Und auch das FIND()
"," nach diesem Punkt zu finden, der den Startpunkt mit 1 benötigt, damit er FIND()
dort beginnt und nicht durch frühere Kommas verwirrt wird.
Das ist unkompliziert und was man „hässlich“ nennt … na ja … Verwenden Sie für das Upgrade die LET()
Funktion. Man könnte sich damit ziemlich hinreißen lassen, aber ich schlage vor, sie nur für die sich ändernden Eingaben in die Formel zu verwenden: die Zelle, in der gesucht werden soll, die Startzeichenfolge und die Endzeichenfolge. Auf diese Weise ist das Ändern der Zelle, in der gesucht wird, einfach, da es nur an einer Stelle vorkommt, nicht an den sechs oder so, an denen die Formel es verwendet. Das sollte es auch beschleunigen, da es sich um eine Berechnung handelt, nicht um sechs. Die beiden Begrenzungszeichenfolgen sind auch einfach zu bearbeiten, da sie ebenfalls gleich am Anfang stehen, sodass die Formel leicht angepasst werden kann, um die zweite angeforderte Suche und andere zu übernehmen. Es wird auch ziemlich einfach, Eingabezellen zu verwenden, um Zeichenfolgen für die Grenzen zu enthalten.
Ich denke, eine häufigere Verwendung von LET()
hier würde das Verständnis der Funktionsweise der Formel beeinträchtigen, obwohl andere Gehirne anders arbeiten und ihre Komponenten vielleicht lieber in Form Let()
von benannten Bereichen mit Zellbereich (Excel-Referenz hier, Programmierer würden sie Variablen nennen) setzen würden, und dann wäre die funktionierende Formel eine minimale Sache. Wenn dies die GESAMTE Größe der Formel verringern würde, würde ich wahrscheinlich vorschlagen, dies zu tun, aber in diesem Fall wäre dies nicht der Fall, also ... Aber ehrlich gesagt würde es für jemand anderen den gegenteiligen Sinn ergeben, also warum nicht für sie?
Ich gehe davon aus, dass jeder, der das Problem liest, tatsächlich das oben genannte wissen möchte, eine Möglichkeit, das Besprochene zu erreichen. Aber was wirklich gefragt wird, ist, warum die über Google gefundene Formel fehlgeschlagen ist?
Im Grunde, weil es nicht nach dem richtigen Anfang sucht oder die richtige Länge der Zeichenfolge berechnet. Das erste SEEARCH()
Beispiel: Es findet den Anfang der Begrenzungszeichenfolge und fügt ... 3 ... hinzu. Ohne guten Grund, wenn man bedenkt, dass die Logik der Formel im Wesentlichen dieselbe ist wie in diesen Antworten. Die zu erstellende Zeichenfolge muss NACH MID()
der vollständigen Begrenzungszeichenfolge beginnen. Diese Zeichenfolge ist 22 Zeichen lang, nicht 3, also ... Dann MID()
ist der dritte Parameter für , die Länge der zurückzugebenden Zeichenfolge, falsch. Es findet das Komma vor der Begrenzungszeichenfolge und arbeitet von dort aus, um tatsächlich eine negative Länge und damit einen Fehler zurückzugeben. Andere Eingabedaten könnten eine tatsächliche Rückgabe liefern, aber es würde nie eine korrekte Rückgabe liefern, da es völlig falsche Eingabeoptionen verwendet. Korrigieren Sie diese Probleme, und Sie sollten eine funktionierende Formel haben. Netter Ansatz, nicht so schöne Umsetzung. Aber einen guten Ansatz zu finden ist fast immer das Schwierigere! Sie müssen nur noch einmal darüber nachdenken, wie Sie die Details wählen, die zu den als Parameter für diese schlechte MID()
Funktion generierten Zahlen führen.