Frage von Drecunion, 68

Mit Excel eine Zelle nach einem Text durchsuchen mit anschließender Zahlenfolge und diesen dann löschen, wie ?

Hallo bin derzeit bei Excel am rätseln wie ich folgendes bewerkstelligen kann: ich habe mehrere in HTML formatierte Texte die verschieden lang sind und an einer bestimmten Stelle folgenden Text aufweisen der gelöscht werden soll, dieser Text ist an sich immer gleich nur der Zahlenwert ist verständlicherweise immer anders und manchmal 7, 8, 9 oder 10 Zeichen lang: "Artikelnummer: mkl - 40372714" wie kann ich jetzt mit einer Excel Formel diese Passage finden und löschen? Hatte es bereits über eine Kombination aus ersetzen und suchen funktioniert aber bis jetzt erfolglos, da ich die Zahlenwerte nicht ansprechen kann bzw. nicht wüsste ich das jetzt anstellen soll. Würde mich über Tipps freuen!

Hilfreichste Antwort - ausgezeichnet vom Fragesteller
von Oubyi, Community-Experte für Excel, 55

Wenn die Länge der Artikelnummer immer gleich ist, dann teste mal diese Formel:

=LINKS(A1;FINDEN("Artikelnummer";A1)-1)&RECHTS(A1;LÄNGE(A1)-(FINDEN("Artikelnummer";A1)+28))

Anschließend die Formelzellen kopieren und Inhalte einfügen--> Werte.

Kommentar von Oubyi ,

SORRY:
"manchmal 7, 8, 9 oder 10 Zeichen lang: "
DAS hatte ich überlesen, dann kannst Du meine Formel vergessen.
Kommt denn NACH der Artikelnummer immer ein bestimmtes Zeichen, z.B ein Slash?

Kommentar von Drecunion ,

ja es kommt ein schließender HTML Tag danach immer also ein kleiner Zeichen (<). Sieht Beispielsweise so aus:

<font size=4>Artikelnummer: mkl - 123456789</font>

Ich habe schon eine ungefähre Vorstellung wie sich das Problem lösen lässt aber dafür müsste ich den Text vor der Bezeichnung "Artikelnummer: mkl - ##########" ausgeben lassen und einmal ab "Artikelnummer: mkl -" dann könnte ich ganz einfach mit einer wenn abfrage bis zum < Tag alles löschen und müsste dies nur noch zusammen fügen.

Kommentar von Ninombre ,

=LINKS(A1;FINDEN("Artikelnummer";A1)-1)&RECHTS(A1;LÄNGE(A1)-FINDEN("<";A1;FINDEN("<";A1)))

sollte dann klappen

Kommentar von Oubyi ,

... aber nur, wenn das der ERSTE Tag ist.
@Drecunion: IST das so?
Oder kann man zumindest sagen, das ist immer der 2te, 3t Tag?

P.S.: Muss jetzt leider zu Arbeit, schaue aber heute Abend nochmal rein.

Kommentar von Ninombre ,

=LINKS(A1;FINDEN("Artikelnummer";A1)-1)&RECHTS(A1;LÄNGE(A1)-FINDEN(">";A1;FINDEN("Artikelnummer";A1)))

wäre besser.

Kommentar von Drecunion ,

Hallo danke für die Formel, die funktioniert auch wie die von ShitzOvran. Sogar noch etwas kürzer, nicht schlecht. Besten Dank!

Kommentar von Oubyi ,

Danke fürs

Expertenantwort
von Ninombre, Community-Experte für Excel, 33

Ich stelle es noch mal als Antwort ein, weil es in den Kommentaren irgendwann unübersichtlich ist. Die Formel von oubyi ergänzt:

=LINKS(A1;FINDEN("Artikelnummer";A1)-1)&RECHTS(A1;LÄNGE(A1)-FINDEN(">";A1;FINDEN("Artikelnummer";A1)))

Die Position finden, wo Artikelnummer beginnt. Ab dieser Position das nächste < suchen.

Dann einfach den linken Teil des Textes bis zur Position mit dem rechten Teil des Textes ab der Position des < zusammenfügen. Damit entfällt die Artikelnummer in der Mitte.

Kommentar von Drecunion ,

Funktioniert, danke!

Kommentar von Drecunion ,

Kleiner Hinweis am Rande... bei deiner Funktion wird mir noch ein HTML Tag weggeschnitten das sogesehen nach der Artikelnummer kommen würde. Ist jetzt nicht weltbewegend aber wollte dich nur mal drauf aufmerksam machen, dass etwas zu viel weggeschnitten wird.

Kommentar von Ninombre ,

Danke für den Hinweis, durch die elend langen Links war es mir nicht aufgefallen. 

Expertenantwort
von DeeDee07, Community-Experte für Excel, 68

Falls das Wort "Artikelnummer" in dem vorderen Text, den du behalten willst, nicht vorkommt, kannst du

=LINKS(A12;SUCHEN("Artikelnummer";A12)-1)

verwenden.

Kommt rechts von dem zu löschenden Text noch etwas, was behalten werden soll?

Wie du ansonsten Zahlen vom Text trennen kannst, steht auch hier http://excelformeln.de/formeln.html?gruppe=2 (Nummern 100-102)

Kommentar von Drecunion ,

Erstmals vielen Dank für deine Antwort.

Leider ist dies nicht so einfach. Der gesuchte Wert fängt bereits bei Artikelnummer an also wie schon in Klammern gesetzt wird der Wert "Artikelnummer: mkl - 40372714" gesucht, wobei die Leerstellen und alles weitere an sich gleich bleibt nur die Nummer ist immer anders. Vor und hinter dem zu suchenden Wert befinden sich jeweils noch HTML Tags. Deswegen ist es wichtig das nur der in Anführungszeichen genannte Wert gelöscht wird.

Kommentar von DeeDee07 ,

Wenn der zu löschende Text am Anfang steht, kannst du das ganze mit der Text in Spalten Funktion http://praxistipps.chip.de/excel-text-in-spalten-so-funktionierts_27042 aufteilen, die ersten nicht benötigten Spalten löschen und den Rest wieder zusammenfügen.

Kommentar von Drecunion ,

Das Hätte man auch gut machen können, wenn die HTML Texte nicht unterschiedlich lang wären. Bei mir handelt sich um Artikelbeschreibungen und die fallen in der Zeichenlänge ziemlich unterschiedlich aus von 1315 bis zu 13711 Zeichen ist da alles dabei. Gibt es sonst die Möglichkeit den Begriff

"Artikelnummer: mkl" zu suchen und sobald der Begriff anfängt nur diesen Text auszugeben, also ab Artikelnummer usw.? Dazu bräuchte ich dann auch eine Formel die dann auch den Text vor der Artikelnummer angibt (fürs spätere zusammenfügen). Dann könnte ich nämlich mit einer wenn Abfrage den Text rauslöschen bis das Zeichen < kommt da dort der nächste HTML Tag nämlich schließt. Dann müsste ich nur noch die beiden Ergebnisse zusammenfügen und ich sollte meine Lösung haben.

Wenn ich unverständlich werde bitte bescheid sagen, versuche es so gut wie möglich zu erklären und es ist nicht ganz leicht.

Kommentar von ShitzOvran ,
=LINKS(A1;FINDEN("Artikelnummer: mkl";A1;1)-1)

Damit bekommst du den Text bis zum "Artikelnummer: mkl"

Kommentar von Ninombre ,

Ist die Anzahl der < oder > in den Texten immer gleich? Dann könntest Du anhand eines der beiden die HTML Texte in Spalten aufteilen. Anschließend die Spalte mit den zu ändernden Artikelnummern sortieren (wenn nicht von vornherein nummerisch aufsteigend möglich, mit einer Hilfsspalte =länge(A1) also die Anzahl der Stellen zählen und danach sortieren.

Dann lässt sich über verschiedene Varianten dieser Teil einfacher beackern, also die Formel anpassen, um die unterschiedlich vielen Stellen zu berücksichtigen.

Kommentar von Drecunion ,

Anzahl ist nicht gleich, wie bereits erwähnt variieren die Zeichen von 1000 bis 13000 daher gibt es auch mehrere Tags.

Mit der Formel weiter unten von ShitzOvran konnte ich es jetzt auch lösen. Nochmal danke für die Hilfe! :)

Antwort
von ShitzOvran, 54

nicht schön aber selten:


=WECHSELN(A1;RECHTS(GLÄTTEN(LINKS(A1;FINDEN(" ";A1;FINDEN(" ";A1;FINDEN(" ";A1;FINDEN(" ";A1;FINDEN(" ";A1;FINDEN(" ";A1;FINDEN(" ";A1;FINDEN("Artikelnummer: mkl - ";A1;1))+1)+1))+1)))));FINDEN(" ";A1;FINDEN(" ";A1;FINDEN(" ";A1;FINDEN(" ";A1;FINDEN(" ";A1;FINDEN(" ";A1;FINDEN(" ";A1;FINDEN("Artikelnummer: mkl - ";A1;1))+1)+1))+1)))-FINDEN("Artikelnummer: mkl - ";A1;1));"")

Ich gehe davon aus, dass dein Text in Zelle A1 steht. zudem ist voraussetzung das der Begriff "Artikelnummer: mkl - XXXXXXXXX" nur einmal pro Zelle vorkommt... evtl funktioniert das ja

Kommentar von Drecunion ,

Der Begriff kommt in der Tat auch nur einmal pro Zelle vor, leider funktioniert die Formel aber auch nicht, dennoch danke für die Hilfe.

Kommentar von ShitzOvran ,

Ich suche nach Leerzeichen... da du aber mit HTML arbeitest, sieht der Text vermutlich anders aus, als ich gedacht habe.... hättest du evtl mal ein kleines Beispiel (kleinen Textauszug) wie der Zelleninhalt aussieht?

Kommentar von ShitzOvran ,

alles klar, hab's bei Oubyi gesehen...


versuche das: 

=WECHSELN(A1;RECHTS(LINKS(A1;FINDEN("<";A1;FINDEN("Artikelnummer: mkl";A1;1))-1);LÄNGE(LINKS(A1;FINDEN("<";A1;FINDEN("Artikelnummer: mkl";A1;1))-1))-FINDEN("Artikelnummer: mkl";A1;1)+1);"")
Kommentar von Drecunion ,

Also hier ein Beispiel Text ist originalgetreu nur die Artikelbeschreibung habe ich jetzt einfach nur ersetzt.

Nicht wundern das teilweise viele überflüssige und doppelt gemoppelte HTML Tags drinne sind. Die Beschreibungen sind teilweise schon mehrere Jahre alt und ich soll dort nur die Artikelnummer: mkl - ######## rausnehmen.

Ich hoffe du kannst dir jetzt mein Problem besser vorstellen

<div align="center"><font size="4" color="#000000" face="Verdana"><b>Artikelüberschrift</b></font></div><div align="center"><font size="4"> </font></div><div align="center"><font size="4"> </font></div><div align="center"><font size="4"> </font></div><div align="center"><font size="4" color="#000000" face="Verdana">beschreibung</font></div><div align="center"><font size="4"> </font></div><div align="center"><font size="4" color="#000000" face="Verdana">beschreibung2</font></div><div align="center"><font size="4"> </font></div><div align="center"><font size="4" color="#000000" face="Verdana">beschreibung3</font></div><div align="center"><font size="4"> </font></div><div align="center"><font size="4" color="#000000" face="Verdana">beschreibung4</font></div><div align="center"><font size="4"> </font></div><div align="center"><font size="4" color="#000000" face="Verdana">beschreibung5</font></div><div align="center"><font size="4"> </font></div><div align="center"><font size="4" color="#000000" face="Verdana">beschreibung6</font></div><div align="center"><font size="4"> </font></div><div align="center"><font size="4" color="#000000" face="Verdana">beschreibung7</font></div><div align="center"><font size="4"> </font></div><div align="center"><font size="4" color="#000000" face="Verdana">beschreibung8</font></div><div align="center"><font size="4"> </font></div><div align="center"><font size="4" color="#000000" face="Verdana">beschreibung9</font></div><div align="center"><font size="4"> </font></div><div align="center"><font size="4" color="#000000" face="Verdana">beschreibung10</font></div> <div align="left"><font size="2" color="#000000" face="Verdana"><b></b></font></div> </font></div></td> <br /> </tr> </table></td> </tr> <tr> <td><font color="#666666" size="4" face="Arial, Helvetica, sans-serif"> </font></td> </tr> <tr> <td align="center"><font color="#666666" size="4" face="Arial, Helvetica, sans-serif">Artikelnummer: mkl - 40372714</font></td> </tr> <tr> <td align="center">

Kommentar von ShitzOvran ,

vielen Dank für das Beispiel...wie ich oben schon geschrieben habe... versuche  es mal so:

=WECHSELN(A1;RECHTS(LINKS(A1;FINDEN("<";A1;FINDEN("Artikelnummer: mkl";A1;1))-1);LÄNGE(LINKS(A1;FINDEN("<";A1;FINDEN("Artikelnummer: mkl";A1;1))-1))-FINDEN("Artikelnummer: mkl";A1;1)+1);"")

Kommentar von Drecunion ,

So bin erst jetzt leider wieder da, deine Formel funktioniert ShitzOvran! Verstehe jetzt auch endlich wie das ganze geht besten Dank dafür!! :)

Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten