Push-Nachrichten von MacTechNews.de
Würden Sie gerne aktuelle Nachrichten aus der Apple-Welt direkt über Push-Nachrichten erhalten?
Forum>Entwickler>Automatisiertes Suchen und Ersetzen in Excel

Automatisiertes Suchen und Ersetzen in Excel

beckenbauer
beckenbauer27.01.2314:58
Hi Zusammen,

ich habe folgende Problemstellung:
Ich habe HTML-Textdateien, die ich in Excel bearbeiten muss.
Der Inhalt der Dateien sind Texte, die unter anderem immer mal wieder vorkommende Spezialbegriffe/Abkürzungen enthalten, welche umbenannt/umformatiert werden müssen.
Diese Begriffe kommen zum Teil mehrfach pro Dokument vor.
Aktuell nutze ich die Funktion "Suchen und Ersetzen" in Excel und ändere damit im kompletten Dokument einen oder mehrere Begriffe. Zum Beispiel soll aus dem Begriff "PVA" im gesamten Dokument "Photovoltaik-Anlage" gemacht werden.
Soweit so gut.
Da ich dies aber sehr häufig mit teilweise einer MENGE an zu ändernden Begriffen habe, ist das händisch SEHR mühsam.

Mein Gedanke war nun, eine "Korrektur"-Datei anzulegen und den Vorgang zu automatisieren.
In dieser Excel-Datei liegt in Spalte 1 zb. der ZU SUCHENDE Begriff ("PVA") und in Spalte 2 der zugehörige Korrektur Begriff ("Photovoltaik-Anlage").
In den weiteren Zeilen liegen dann weitere zu suchende und zu ersetzende Begriffe.
Da im Laufe der Zeit immer wieder neue Begriffe hinzukommen, wird die Liste schnell auf mehrere hundert Begriffe wachsen...

Nun bräuchte ich ein Script/Tool o.ä. das in der Ausgangsdatei mit den Texten nach den Begriffen aus der Korrekturliste (Spalte1) sucht und die gefundenen Begriffe mit den Korrekturen aus der Spalte 2 ersetzt.
Und zwar im gesamten Ausgangs-Dokument.

Hat da jemand eine Lösung?

Danke und LG,
Daniel
0

Kommentare

desko7527.01.2316:03
Spontan würde ich sagen, müsste das in Excel mit dem SVERWEIS oder alternativ dem moderneren XVERWEIS und einer Hilfsspalte funktionieren. Die Funktion ist schon etwas für Fortgeschritten, würde ich meinen, von daher ließ Dich am Besten mal ein.

Hier die Doku bei Microsoft zur Funktion SVERWEIS:
0
ttwm27.01.2316:15
Wenn Excel AppleScript unterstützt, könnte man damit wohl etwas machen - hab aber hier gerade kein Excel zur Hand um das auszuprobieren.

Alternativ könntest Du
die HTML-Textdateien erstmal in Textmate öffnen,
da ein Suchen-und-Ersetzen-Script drüberlaufen lassen (dieses in Textmate vorher anzulegen/aufzuzeichnen ist mit der Funktion "Macro Start Recording"…" pillepalle einfach – und ist später auch per Hand gut erweiterbar, wenn neue Wörter hinzukommen)
und danach in Excel für andere Dinge weiterverarbeiten.

Problem bei diesen Automatismen in HTML-Dateien ist leider, dass evtl. auch Links zu Dateinamen oder CSS-Style-Angaben abgeändert werden könnten.
0
rmayergfx
rmayergfx27.01.2316:18
HTML Dateien in Excel zu bearbeiten ist eine der schlechtesten Optionen die es gibt. Jeder simple Texteditor ist hier schneller und vermeidet Fehler durch falsche Zeichencodierung!

Für schnelles und sauberes Editieren gibt es z.B. CotEditor, während du da noch mit Excel am start bist, hat man damit schon die Files modifiziert.
„Der Computer soll die Arbeit des Menschen erleichtern, nicht umgekehrt !“
-1
marm27.01.2316:25
Für Excel muss man da schon mit VBA ran. Ich habe mal Google bemüht (Stichworte Batch Replace) und hier ein VBA Makro gefunden: Ungefähr in der Mitte des Artikels.

So etwas wie SVERWEIS hilft nicht, da man die Formel in jede Zelle einfügen müsste und das für jede Excel-Tabelle immer wieder erneut. So habe ich aber kürzlich eine zweisprachige Excel-Tabelle erstellt, die auf ein Wörterbuch zugreift.
+1
ttwm27.01.2316:27
rmayergfx
Für schnelles und sauberes Editieren gibt es z.B. CotEditor, während du da noch mit Excel am start bist, hat man damit schon die Files modifiziert.
Hat CotEditor ebenfalls eine Macro-Funktion, um das automatisiert über Dateien laufen zu lassen?
0
rmayergfx
rmayergfx27.01.2316:29
marm
Für Excel muss man da schon mit VBA ran. Ich habe mal Google bemüht (Stichworte Batch Replace) und hier ein VBA Makro gefunden: Ungefähr in der Mitte des Artikels.

So etwas wie SVERWEIS hilft nicht, da man die Formel in jede Zelle einfügen müsste und das für jede Excel-Tabelle immer wieder erneut. So habe ich aber kürzlich eine zweisprachige Excel-Tabelle erstellt, die auf ein Wörterbuch zugreift.

Dabei ist die Gefahr dennoch sehr groß, das man damit das HTML unnötig mit Syntaxfehlern bestückt.

Eine weitere gute Alternative wäre Textmate damit kann man auch übere mehrere gleichzeitig geöffnete Dateien Text ersetzen, was durchaus sehr praktisch ist. Oder man kauft sich Sublime Text Dies kann das auch.
„Der Computer soll die Arbeit des Menschen erleichtern, nicht umgekehrt !“
0
rmayergfx
rmayergfx27.01.2316:32
ttwm
rmayergfx
Für schnelles und sauberes Editieren gibt es z.B. CotEditor, während du da noch mit Excel am start bist, hat man damit schon die Files modifiziert.
Hat CotEditor ebenfalls eine Macro-Funktion, um das automatisiert über Dateien laufen zu lassen?
Ja, schau mal auf die Homepage was das Tool alles kann.
Aber wofür ein Script. Ich nehme CotEditor, öffne die Datei, sage Suche "PVA" trage im Feld Replace with "Photovoltaik-Anlage" ein und sage er soll alle Fundstellen ersetzen, also wofür dann noch ein Macro?

Hier einige Vorlagen für Scripts:
„Der Computer soll die Arbeit des Menschen erleichtern, nicht umgekehrt !“
-1
ttwm27.01.2316:36
rmayergfx
ttwm
rmayergfx
Für schnelles und sauberes Editieren gibt es z.B. CotEditor, während du da noch mit Excel am start bist, hat man damit schon die Files modifiziert.
Hat CotEditor ebenfalls eine Macro-Funktion, um das automatisiert über Dateien laufen zu lassen?
Ja, schau mal auf die Homepage was das Tool alles kann.
Aber wofür ein Script. Ich nehme CotEditor, öffne die Datei, sage Suche "PVA" trage im Feld Replace with "Photovoltaik-Anlage" ein und sage er soll alle Fundstellen ersetzen, also wofür dann noch ein Macro?
Weil der TE nach meinem Verständnis immer wieder Texte bekommt, in denen er immer wieder die gleichen Begriffe ersetzen muss (wofür sonst der Aufwand mit einem Script?). Und dann ist ein Macro, dass in jedem Text nunmal immer die gleichen Dinge austauscht, deutlich einfacher, als wenn ich von Hand zig Suchbegriffe und Ersetzungsbegriffe im Suchen-/Ersetzen-Dialog eingeben muss.
+1
rmayergfx
rmayergfx27.01.2316:46
Das geht in CoTEditor noch wesentlich einfacher. Dort gibt es im Menü "Suchen" den Unterpunkt "Multipel ersetzen...." Darin kann man alle gewünschen Begriffe eintragen und nacheinander ersetzen lassen. Kommt eine neue Ersetzung dazu trägt man diese einfach in die Liste mit ein oder erstellt sich eine neue.

Dies Liste bleibt erhalten, man öffnet das Dokument wählt den Menüpunkt aus und alles wird ersetzt, sofern vorhanden. Mit der Option "Alles hervorheben" hat man auch eine optische Kontrolle:
„Der Computer soll die Arbeit des Menschen erleichtern, nicht umgekehrt !“
+1
ttwm27.01.2316:55
Dann hat der TE – falls das überhaupt alles in Frage kommt – ja mehrere Editoren zur Auswahl, um automatisiert Begriffe zu ersetzen.
0
marm27.01.2317:14
Zwischenfrage: Warum muss man HTML-Dateien in Excel bearbeiten? Was ist der Anwendungszweck?
+1
beckenbauer
beckenbauer27.01.2317:31
Hey, danke für die vielen Infos.

CoTeditor scheint mit dem "Multipel ersetzen" genau das zu machen, was ich suche.
Habe das jetzt mal testweise mit 2 Begriffen ausprobiert und das sieht gut aus.

Ansonsten war die Frage, warum HTML in Excel bearbeitet werden muss.
Die HTML-Dateien bekomme ich vom Kunden geliefert die er aus einer Inhouse-Applikation
generiert. Das geht dort nicht so ohne weiteres, ein anderes Format zu exportieren.

D.h. ich MUSS mit den HTMLs leben und muss von meiner Seite aus die Dateien weiterbearbeiten (indem
ich die genannten Fachbegriffe korrigiere/ändere) und dann eine finale .XLS-Datei an einen Kollegen weiterleiten.
Also: Input und Output-Format sind sozusagen festgelegt.

Ich probiere jetzt mal noch ein wenig mit CoTeditor rum und schaue mal, wie sich das in Praxis ausgeht...

DANKE an ALLE!!
+1
xcomma28.01.2312:55
beckenbauer
D.h. ich MUSS mit den HTMLs leben
Bevor du erwähntest, dass das Resultat ein .xls sein muss, geht es dem Fragensteller höchstwahrscheinlich nicht darum, dass es ein .html ist, sondern, dass die meisten Leute solche Dateien in aller Regel in z.B. Texteditoren aufmachen und es durchaus als exotisch zu bezeichnen ist, wenn man .html in Excel aufmacht.
beckenbauer
und dann eine finale .XLS-Datei
Das ist interessant. Ist es dir möglich eine Beispiel HTML Datei bzw. struktur-aussagekräftigen Ausschnitt einer solchen Datei hier zu posten (bei Bedarf mit anonymisierten Daten)?
Wenn ich eine "normale" HTML Datei einer Webseite in Excel lade sieht das in aller Regel gelinde gesagt "suboptimal" aus. Das dann daraufhin noch als .xls abzuspeichern ist wirklich exotisch.
Somit wirft es die Frage auf, wie so eine HTML Datei, mit der du arbeiten musst, letztendlich aussieht.
Ferner wäre ein Beispielscreenshot so einer Excel Datei auch interessant.
Es muss .xls sein? Oder kann es auch .xlsx oder gegebenenfalls .csv sein?
0
beckenbauer
beckenbauer28.01.2316:03
Ich kann leider von den Daten hier nichts zeigen (confidential).
Daher hier nur ein weichgezeichneter Screenshot, wie die HTML-Datei in Excel aussieht.

Wie schon gesagt, sind es im Prinzip nur 2 Spalten mit Texten... das ganze dann, je nach Projekt, in ca. 40-300 Zeilen.
Excel öffnet bei mir schon seit gefühlten Ewigkeiten html-Dateien (zumindest in dieser Form) ohne Probleme und stellt das sauber getrennt in einzelnen Zellen dar.
Üblicherweise geht man bei HTML vielleicht von Code für Webseiten etc. aus. Eignet sich aber auch
prima für klar strukturierte Text-Dokumente (zumindest funktioniert es hier seit Jahren problemlos).
Vielleicht hätte ich das im Ausgangspost etwas deutlicher machen sollen....


Achja, theoretisch geht auch .xslx ...
0
marm28.01.2316:19
OmniOutliner ist als Outliner eine Mischung aus Textverarbeitungsprogramm und Tabelle. OmniOutliner kann Tab-separierte txt-Dateien importieren und xls exportieren . Und es kann AppleScript.
Der Ablauf wäre dann: Import des html in Excel, speichern als tab-separiertes txt, Textersetzung mittels AppleScript, Export für Excel.
Je nach Ausgangsmaterial könnte html auch in rtf konvertiert (Pandoc) und sodann in OmniOutliner importiert werden.
0
xcomma28.01.2317:24
beckenbauer
Üblicherweise geht man bei HTML vielleicht von Code für Webseiten etc. aus. Eignet sich aber auch
prima für klar strukturierte Text-Dokumente (zumindest funktioniert es hier seit Jahren problemlos).
Solange es strukturiert ist und man (Custom) Parser hat, kann man strukturierte Daten immer verarbeiten. Unter anderem würde man an XML denken als eine Möglichkeit für Datenaustauschformate, aber HTML ist ja auch Teil der SGML

Danke rmayergfx für den CotEditor Hinweis - immer interessant neue Software-Tipps kennenzulernen.

Mit BBEdit liesse es sich auch praktisch analog (auf den ersten Blick) zum CotEditor Ansatz umsetzen mittels einem Feature namens "Text Factory", das aber erst in der Bezahlversion zur Verfügung steht .

Ansonsten - gerade beim Thema Textmanipulation - kann einem auch schnell mal Emacs einfallen. Da ich aber nicht firm im Detail bin, kann ich nur umreissen wie der Ansatz aussehen könnte. Mit den Standardfunktionen kann man sich so ein gewünschtes Mehrfach-Search-Replace Elisp Skript realisieren. Und mit Kenntnis der Ausgangsstruktur und sonstigen Bedingungen lässt es sich ganz nach Belieben gestalten sowie sicherstellen, dass nicht aus Versehen jedes Vorkommen einer vermeintlichen Abkürzung ersetzt würde (wenn man z.B. nur rudimentäres, triviales Search&Replace (in welchem Texteditor auch immer) vornehmen würde. Dieses liesse sich dann effizient auf Kommandozeile samt "Dictionary"-Datei und Namen für die Ausgabedatei als Argumente ablaufen lassen. Ohne die eigentliche GUI aufstarten zu müssen. So eine Dictionary Datei wäre eine Plaintext Datei mit den Key-Value Paaren, die man einfach über Zeit dann dort erweitert. Wenn das einmal aufgesetzt ist, wäre es fortan ein Aufwand eines Einzeiler-Befehls im Terminal mit einer Ausführungszeit von gefühlt 1 Sekunde.
Das was allerdings unklar ist, ist der Ablauf des .xls/.xlsx Teils (erwartete Struktur, Alternativen, als auch nachgelagerter Workflow) im Detail, um weitergehende Ideen zu entwickeln um auch den Teil nach Möglichkeit zu automatisieren - anstelle eine zunächst angepasste/korrigierte .html Datei noch manuell ins Excel zu importieren um diese dann wiederum als .xls/.xlsx zu exportieren.
0
marm28.01.2317:49
Durch Emacs fiel mir gerade das Tool VisiData ein. VisiData kann per Homebrew installiert werden und ist ein Data Exploration Tool für Tabellen im Terminal.
VisiData kann direkt html importieren und es kann per Regex suchen/ersetzen

Und noch was: Easy Data Transform
Hier ist das Batch Replace sogar beschrieben
0
xcomma28.01.2318:18
Danke für die Links. Das VisiData ist mir neulich bereits in einem anderen Diskussionsthread hier aufgefallen. Sieht wirklich interessant aus.

Easy Data Transform eröffnet - aus meiner Sicht zumindest - dann die Kategorie ETL Tools hier - das sind dann schon schwere Geschütze
0

Kommentieren

Diese Diskussion ist bereits mehr als 3 Monate alt und kann daher nicht mehr kommentiert werden.