🙏 Bitte helfen Sie uns das LibreOffice Forum zu erhalten. 🙏
Ihre Spende wird für die Deckung der laufenden Kosten sowie den Erhalt und Ausbau 🌱 des LibreOffice Forums verwendet.

🍀 Wir hoffen auf Ihre Unterstützung - vielen Dank!🍀

❤️ DANKE >> << DANKE ❤️

>> Dank Ihrer Unterstützung -> Keine Werbung für alle registrierten LibreOffice-Forum User! <<
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗

Makro: Wörter eines Textes

WRITER hat alles, was Sie von einer modernen, voll ausgestatteten Textverarbeitung erwarten.
anton
Beiträge: 59
Registriert: Di 10. Jul 2012, 11:37

Makro: Wörter eines Textes

Beitrag von anton » Mo 9. Jun 2025, 11:32

Hallo,

in einer Tabellenzelle stehen | Vorname Nachname |
ich möchte mit einem Makro den Vorname und den Nachname in getrennte Variablen abspeichern, so dass ich den Zelleninhalt verändern kann in | Nachname Vorname |

Wie muss ich das programmieren?

Vielen Dank für Hinweise.

anton

Pit Zyclade
* LO-Experte *
Beiträge: 3041
Registriert: Mo 12. Nov 2012, 16:59

Re: Makro: Wörter eines Textes

Beitrag von Pit Zyclade » Mo 9. Jun 2025, 11:38

Woran soll denn das Makro (oder irgendetwas) erkennen, was der Vorname und was der Nachname ist.
Ist denn wenigstens die Struktur des Textes stabil vorgegeben? Dann könnte man nömlich den Text einfach in calc importieren und hätte wenigstens bereits eine "Tabelle". In diesem Falle hätte man gar kein Makro nötig, weil man Spalten einfach verschieben|vertauschen kann. Und ganz am Ende könnte man das Ganze wieder nach writer bringen.
LO 24.8.7.2 (X86_64) / Windows 11 64bit
Problem gelöst? Dann bitte im Betreff der ersten Nachricht [gelöst] voranstellen.

anton
Beiträge: 59
Registriert: Di 10. Jul 2012, 11:37

Re: Makro: Wörter eines Textes

Beitrag von anton » Mo 9. Jun 2025, 11:54

Es ist eine Writer-Tabelle.

In EINER Tabellenzelle stehen VORNAME NACHNAME und sonst nichts.

Da es mehrere, umfangreiche Tabellen sind möchte ich mit einem Makro die Reihenfolge umtauschen in NACHNAME VORNAME.

Vorstellen kann ich mir:
Das Makro scannt in der Zelle die Zeichen bis zum FREIZEICHEN.
Alle Zeichen davor sind der VORNAME, alle Zeichen danach sind der NACHNAME.
Dann wird die Zelle neu beschrieben in der Reihenfolge NACHNAME VORNAME.

Nur, wie ich das programmieren soll ...

Benutzeravatar
miesepeter
* LO-Experte *
Beiträge: 2135
Registriert: So 19. Dez 2010, 18:16
Wohnort: Bayern

Re: Makro: Wörter eines Textes

Beitrag von miesepeter » Mo 9. Jun 2025, 12:24

Hallo,

wieso Makro?!

Es wäre einfacher, das mit SUCHEN&ERSETZEN zu erledigen.
Wenn deine Adressdatei so aufgebaut ist, dass nur

VORNAME NACHNAME

mit einem Leerzeichen dazwischen ist, dann wäre es ohne Hilfsspalte möglich, die Aufgabe zu erledigen.

Was ist aber bei Namen wie z. B.
  • Hans Peter Mustermann
  • Dr. Anke Musterfrau
  • Franz Josef Mustermann Angsthase
  • Francine O'Hara
  • Abigail-Mary Lundquist-Remedy
???

Bei SUCHEN&ERSETZEN bei Namen mit nur einem Leerzeichen dazwischen gehe wie folgt vor (☒ reguläre Ausdrücke)

SUCHEN

Code: Alles auswählen

(\b[a-zA-Z-']+\b)\s(\b[a-zA-Z-']+\b)
(Sucht/findet auch "Doppelwörter" mit Bindestrich und/oder Apostroph)

Ersetzen

Code: Alles auswählen

$2 $1
(Leerzeichen zwischen $2 und $1)

Ciao

PS: Lesehinweis https://unicode-org.github.io/icu/userguide/strings/regexp.html

EDIT
Falls mehrere Leerzeichen vorkommen, dann würde ich raten, die Tabelle nach Calc zu exportieren und die Leerzeichen zu zählen. Bei mehr als einem muss anders vorgegangen werden als oben beschrieben.

anton
Beiträge: 59
Registriert: Di 10. Jul 2012, 11:37

Re: Makro: Wörter eines Textes

Beitrag von anton » Mo 9. Jun 2025, 12:59

Aber -- ich soll das für ca. 200 Zeilen einer Tabelle machen?
Ohne Makro?

(Für die Sondernamen habe ich noch keine Lösung. Da könnte ich mir auch händisch noch etwas vorstellen.)

Benutzeravatar
miesepeter
* LO-Experte *
Beiträge: 2135
Registriert: So 19. Dez 2010, 18:16
Wohnort: Bayern

Re: Makro: Wörter eines Textes

Beitrag von miesepeter » Mo 9. Jun 2025, 14:10

anton hat geschrieben:
Mo 9. Jun 2025, 12:59
ich soll das für ca. 200 Zeilen einer Tabelle machen?
*schnauf*
Du kannst das nacheinander oder in einem Schritt machen. :oops:
.
SUCHEN_ERSETZEN.png
SUCHEN_ERSETZEN.png (13.09 KiB) 881 mal betrachtet
Zuletzt geändert von miesepeter am Mo 9. Jun 2025, 15:02, insgesamt 1-mal geändert.

Benutzeravatar
miesepeter
* LO-Experte *
Beiträge: 2135
Registriert: So 19. Dez 2010, 18:16
Wohnort: Bayern

Re: Makro: Wörter eines Textes

Beitrag von miesepeter » Mo 9. Jun 2025, 15:00

SUCHEN&ERSETZEN kann auch in Calc angewendet werden.
anton hat geschrieben:
Mo 9. Jun 2025, 12:59
Für die Sondernamen habe ich noch keine Lösung. Da könnte ich mir auch händisch noch etwas vorstellen.
miesepeter hat geschrieben:
Mo 9. Jun 2025, 12:24
EDIT
Falls mehrere Leerzeichen vorkommen, dann würde ich raten, die Tabelle nach Calc zu exportieren und die Leerzeichen zu zählen. Bei mehr als einem (Leerzeichen) muss anders vorgegangen werden als oben beschrieben.
https://excelblog.ch/zaehlen-eines-bestimmten-zeichens-innerhalb-einer-zelle/ hat geschrieben:=LÄNGE(A1)-LÄNGE(WECHSELN(A1;" ";""))
Du kannst dann in Calc die Hilfsspalte sortieren oder filtern, dann auf die zutreffenden Zellen die SUCHEN&ERSETZEN-Routine anwenden und schließlich die Ausnahmen händisch bearbeiten.

EDIT1
Es wäre überhaupt besser, Vor- und Nachnamen in unterschiedlichen Spalten zu schreiben; damit kann auch besser (alphabetisch) geordnet werden. Dies ginge in Writer und Calc gleicherweise. Für das Bearbeiten und Managen der Adressen halte ich Calc für viel geeigneter als Writer (bzw. Writer-Tabelle). Man kann Calc als Datenbank "missbrauchen" und ist nicht auf die geringen Möglichkeiten des Writers beschränkt. Für Anfänger hat das noch den Vorteil, sich nicht in den Umgang mit Datenbanken einarbeiten zu müssen (die Lernkurve ist hier einfach steiler).


EDIT2
OT: Ich finde, für die paar Adressen ist jetzt der Aufwand, dir das zu erklären, schon recht hoch. Bedenke ich die Zeit dafür, hätte dein Projekt schon locker (manuell) abgeschlossen werden können... :roll:

anton
Beiträge: 59
Registriert: Di 10. Jul 2012, 11:37

Re: Makro: Wörter eines Textes

Beitrag von anton » Mo 9. Jun 2025, 17:11

Mit dem Ausdruck

Code: Alles auswählen

(\b[a-zA-Z-äöüéÄÖÜ']+\b)\s(\b[a-zA-Z-äöüéÄÖÜ']+\b)
finde ich anscheinend auch die Umlaute, wie finde ich aber " é è É È ... "

Denn " é " im obigen Ausdruck habe ich nicht gefunden.
Oder so etwas wie " Ann-Margret " also das Zeichen " - " in solchen Worten.

Benutzeravatar
karolus
* LO-Experte *
Beiträge: 2533
Registriert: Fr 10. Dez 2010, 10:01

Re: Makro: Wörter eines Textes

Beitrag von karolus » Mo 9. Jun 2025, 17:45

Hallo

Wahrscheinlich mit

Code: Alles auswählen

(\w+)\s(\w+)
LO7.4.7.5 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO24.8.0.3 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)

Benutzeravatar
miesepeter
* LO-Experte *
Beiträge: 2135
Registriert: So 19. Dez 2010, 18:16
Wohnort: Bayern

Re: Makro: Wörter eines Textes

Beitrag von miesepeter » Mo 9. Jun 2025, 18:32

anton hat geschrieben:
Mo 9. Jun 2025, 17:11
finde ich anscheinend auch die Umlaute, wie finde ich aber " é è É È ... "
Das kann ich nicht bestätigen. Diese von dir genannten Varianten werden auch gefunden. Vorausgesetzt, du hast die regulären Ausdrücke aktiviert.
Der RegEx von @karolus (\w+)\s(\w+) ist hier wesentlich unschärfer und teils für deine Zwecke falsch; du musst das nur auf die gegebenen Beispiele von mir anwenden. Man kann allenfalls mit \w+ ganze Wörter finden. \w+ findet auch Zahlen, jedoch keine Interpunktion (z. B. bei Dr.). Das müsste man hier auch hinzufügen, wie auch in meinem Vorschlag ergänzen, also (\b[[:alpha:]-'.]+\b)

Man könnte beispielsweise [:alpha:] verwenden, wenn man [A-Za-z] vermeiden will.

Wie man's auch nimmt, es wäre besser, wie oben schon deutlich geschrieben, die Tabelle in Calc zu importieren, dann nach Leerzeichen abzusuchen und am einfachsten mit Daten | Text in Spalten mit etwas Geschick aufzusplitten und letztlich Vornamen und Familiennamen getrennt zu verwalten.

Ciao


An alle, die das LibreOffice-Forum gern nutzen und unterstützen wollen:


Bitte helfen Sie uns mit 7 Euro pro Monat.
Durch Ihren Beitrag tragen Sie dazu bei, unsere laufenden Kosten für die kommenden Monate zu decken.
Unkompliziert per Kreditkarte oder PayPal.
Als ein kleines Dankeschön werden Sie im LO-Forum als SUPPORTER gekennzeichnet.



Antworten