OO Calc Wort finden in A kopieren nach B

Hallo,

ich habe eine OpenOffice Calc csv Tabelle.

In einer Spalte enthält jede Tabellenzelle bzw. jedes Tabellenfeld einen längeren Text.

In dem Text enthalten ist mindestens eins der folgenden 4 Begriffe:
rot
gelb
blau
dunkel blau
Sowie alle Deklinationsformen der Begriffe rote, roter, rotem, rotes, roten. Manchmal ist nur eins der Wörter pro Feld enthalten, manchmal zwei.

Ich will all diese Wörter finden und aus dem Text von Spalte A rauskopieren nach Spalte B.

Es sollen nur die ganzen Begriffe bzw. ganzen Wörter gefunden werden und ihre Deklinationsformen, kein gelbstichig, kein Blauwal, kein Brot.

Ich vermute, dass mir hier bearbeiten und Suchen und Ersetzten nicht weiterhilft, weil ich das ja in eine andere Spalte kopieren will oder?

Bei meiner Suche nach einer passenden Formel scheint Finden am ehesten zuzutreffen.

Die OO Hilfe sagt dazu
FINDEN
Durchsucht eine Textzeichenkette nach einer anderen Zeichenkette. Sie können auch festlegen, wo die Suche beginnen soll. Bei dem Suchbegriff kann es sich um eine Zahl oder eine beliebige Zeichenkette handeln. Die Groß-/Kleinschreibung ist hierbei zu beachten.
Syntax
FINDEN(„TextFinden“; „Text“; Position)
TextFinden bezieht sich auf Text, der gefunden werden soll.
Text ist der Text, wo die Suche stattfindet.
Position (optional) ist die Position im Text, wo die Suche beginnt.
Beispiel
=FINDEN(76;998877665544) ergibt 6.

Ich habe es aber noch nicht richtig hingekriegt.

=FINDEN(A1(rot;gelb;blau;schwarz))
hat es mich erst gar nicht eingeben lassen. Die von OO vorgeschlagene Alternative
=FINDEN(A1/rot;gelb;blau;schwarz)
ergibt einen Namensfehler

Wie muss das richtig heißen?

Schritt 2: Ich habe eine neue Spalte B mit jeweils ein oder zwei Farben. Alle Zellen, in denen zwei Farben stehen, sollen durch einen einzelnen Begriff ersetzt werden. Z. B. Zellen mit rot gelb oder gelb rot will ich finden und durch orange ersetzen. Spielt es eine Rolle bei der Funktion suchen und ersetzten ob ich nach rot gelb oder gelb rot suche? Ich will beides finden, die Reihenfolge ist völlig gleichgültig. Blau und dunkel blau müssen auseinander gehalten werden, auch wenn in beiden Begriffen blau enthalten ist.

Kann mir jemand eine passende Formel nennen oder eine gute Seite zum Nachlesen?

Stephanie

rot
gelb
blau
dunkel blau
Sowie alle Deklinationsformen der Begriffe rote, roter, rotem,
rotes, roten. Manchmal ist nur eins der Wörter pro Feld
enthalten, manchmal zwei.
Ich will all diese Wörter finden und aus dem Text von Spalte A
rauskopieren nach Spalte B.
Es sollen nur die ganzen Begriffe bzw. ganzen Wörter gefunden
werden und ihre Deklinationsformen, kein gelbstichig, kein
Blauwal, kein Brot.

Hallo Stephanie,

du könntest Basic benutzen, nachfolgend ein Beispiel um nach „rot*“ zu suchen, Ergebnisse werden in B aufgelistet.

Sub Suche
dim Satz as string, Zei1 as long, Zei2 as long, Von as long
with thiscomponent.sheets(0)
 for Zei1 = 0 to 100
 if .getcellbyposition(0,Zei1).string"" then
 satz=satz & " " &.getcellbyposition(0,Zei1).string
 end if
 next Zei1
 satz=mid(satz,2) & " "
 while instr(von+1,Satz,"rot")\>0
 von=instr(von+1,Satz,"rot") 
 if mid(satz,von-1,1)=" " then
 Bis=instr(von,Satz," ")
 .getcellbyposition(1,Zei2).string=mid(satz,von,bis-von)
 zei2=zei2+1
 end if
 wend
end with
End Sub

Gruß
Reinhard

Hallo,

du könntest Basic benutzen,

Basic Programmiersprache? Mit der bin ich soweit noch gar nicht in Berührung gekommen. Wo denn benutzen? Einfach in OpenOffice reinkopieren?
nachfolgend ein Beispiel um nach

„rot*“ zu suchen, Ergebnisse werden in B aufgelistet.

Sub Suche
dim Satz as string, Zei1 as long, Zei2 as long, Von as long
with thiscomponent.sheets(0)
for Zei1 = 0 to 100
if .getcellbyposition(0,Zei1).string"" then
satz=satz & " " &.getcellbyposition(0,Zei1).string
end if
next Zei1
satz=mid(satz,2) & " "
while instr(von+1,Satz,„rot“)>0
von=instr(von+1,Satz,„rot“)
if mid(satz,von-1,1)=" " then
Bis=instr(von,Satz," ")
.getcellbyposition(1,Zei2).string=mid(satz,von,bis-von)
zei2=zei2+1
end if
wend
end with
End Sub

Danke, dass du an mich gedacht hast, aber für mich sieht das auf den ersten Blick erst mal sehr abschreckend aus und ich weiß wie gesagt nicht wo und wie ich das anwenden soll.

Ich habe mein Problem mittlerweile zu 3/4 gelöst und jetzt eine Lösung mit Suchen und Bearbeiten und regulären Ausdrücken die mir jeweils eine Farbe pro Zelle findet und den restlichen Text weglöscht. Ich arbeite noch an einer Lösung, die mir alle Farben findet, in Fällen in denen mehr als eine Farbe in einer Zelle ist.

Stephanie

Hallo Stephanie,

du könntest Basic benutzen,

Basic Programmiersprache? Mit der bin ich soweit noch gar
nicht in Berührung gekommen. Wo denn benutzen? Einfach in
OpenOffice reinkopieren?

in OO-Clac, Extras—Makros—Makros verwalten---OO.org Basic.
Links unten siehst du den mappen namen, entweder „Unbenannt1“ wenn es eine neue leere Mappe ist, ansonsten der mappename, klicke darauf, dann erscheint rechts ein Button „Neu“. Darauf klicken…

Dann vergibst du einen Modulnamen, kannst auch „Module1“ übernehmen, Ok. Du siehst dann
Sub main
End Sub, lösch das und ersetze es durch meinen Code.

Beende den Editor.
In Calc kannste das Makro dann ausführen mit
Extras–Makros—Makro ausführen—Makroname.

Du mußt dich dabie links durch die Modulbaumstruktur durchklicken wie beim Dateibaumstruktur im Win-Explorer, also auf die Pluszeichen usw. bis du den makronamen sehen kannst, dann kannste dieses makro ausführen lassen.

Keine Bange, das ist bei jedem Makro der gleiche ähnliche Weg. Paarmal gemacht, dann sitzt das.

Danke, dass du an mich gedacht hast, aber für mich sieht das
auf den ersten Blick erst mal sehr abschreckend aus und ich
weiß wie gesagt nicht wo und wie ich das anwenden soll.

Jetzt weißt du es :smile:

Ich habe mein Problem mittlerweile zu 3/4 gelöst und jetzt
eine Lösung mit Suchen und Bearbeiten und regulären Ausdrücken
die mir jeweils eine Farbe pro Zelle findet und den restlichen
Text weglöscht. Ich arbeite noch an einer Lösung, die mir alle
Farben findet, in Fällen in denen mehr als eine Farbe in einer
Zelle ist.

Solange du hier nicht sagst was du da zu 3/4 fertig hast wirste auch weiter allein das letzte Vioertel finden müssen…

Wenn du nur wissen willst ob und wie oft „rot“ in beliebig langem Text vorkommt, könntest du mit Wechseln arbeiten.
Anzahl des Vorkommens von „rot“
=(Länge(Text)-länge(Text in dem „rot“ durch nix ersetzt wurde)/Länge(„rot“)

Du aber willst ja etwas anderes. Du müßtest, letztlich so wie ich es im Code tat, erstmal nach „rot“ suchen, dann prüfen daß das Zeichen eine Position davor ein Leerzeichen ist, denn Brot willst du nicht, dann mußt du prüfen wann nach der Position von „rot“ wieder ein leerzeichen kommt, alles dazwischen ist dann der Begriff der mit „rot“ beginnt.

Ich sehe da grad keinen Weg Bearbeiten—Suchen–Ersetzen o.ä. da einzubauen.

Mein Code ist ja erstmal nur für „rot“ geschrieben, die anderen drei Suchmuster einzubauen ist möglich.

Noch was, ist schon sehr möglich daß der Code auf dich abschreckend wirkt, aber wenn du den Code von OO kennen würdest der hinter Suchen–Ersetzen steckt oder naderen Funktionen von Calc wirste auch nicht froher *lächel*

Gruß
Reinhard

Hallo,

die 3/4 Lösung ist

zunächst Zeilenumbrüche \n mit regulärem Ausdruck suchen und ersetzen entfernen.
Dann suche nach ^.*(rot|gelb|blau|dunkel blau).*$ ersetzen durch $1

Mit 2-3 % Fehlerquote wegen gefundenen Broten könnte ich glaube ich doch leben.

Als Brotfund Vermeidungsstrategie habe ich auch noch im Hinterkopf, dass meine Farben alle ziemlich am Ende der Texte sind, etwa in den letzten 3 Zeilen einer Zelle oder in den letzten 200 Zeichen. Wenn ich die letzten 200 Zeichen jeder Zelle behalten könnte und den Rest weglöschen, wäre die Fehlfundquote erheblich reduziert. Leider weiß ich aber auch da nicht wie.

Die anderen Lösungsvorschläge habe ich gespeichert und probiere sie aus, sobald ich mich etwas energiegeladener fühle, heute abend definitiv nicht mehr.

Danke für die Vorschläge.

Stephanie

Als Brotfund Vermeidungsstrategie habe ich auch noch im
Hinterkopf, dass meine Farben alle ziemlich am Ende der Texte
sind, etwa in den letzten 3 Zeilen einer Zelle oder in den
letzten 200 Zeichen. Wenn ich die letzten 200 Zeichen jeder
Zelle behalten könnte und den Rest weglöschen, wäre die
Fehlfundquote erheblich reduziert. Leider weiß ich aber auch
da nicht wie.

Hallo Stephanie,

ich glaub immer mehr du hattest schonmal ähnlich angefragt, mit regulären Ausdrücken bei Suchen–Ersetzen die ich so nicht gut genug kenne.

Könntest du mit file-upload o.ä., s. FAQ:2606 mal eine Beispiel-OO-mappe hochladen wo in A Daten/Texte stehen.

Dann könnte ich probieren da Code zu basteln.

Derzeit bin ich aber verwirrt was eigentlich als Ergebnis rauskommen soll.
Bei der Anfangsanfrage sah es noch übersichtlich aus für mich.

Gruß
Reinhard

Hallo,

Derzeit bin ich aber verwirrt was eigentlich als Ergebnis
rauskommen soll.
Bei der Anfangsanfrage sah es noch übersichtlich aus für mich.

Ich habe derzeit
Zelle A1
Text Text Text Text Text rot Text

Zelle A2
Text Text Text Text Text gelb Text

Zelle A3
Text Text Text Text Text gelb Text blau.

Als Ergebnis will ich folgendes (in welcher Spalte ist egal, zu Bearbeitungszwecken wurde die Farbspalte ohnehin einzeln in eine Tabelle kopiert)

Zelle A1
rot

Zelle A2
gelb

Zelle A3
gelb blau

Zelle A3 mit zwei Farben muss dann zu einem späteren Zeitpunkt noch nachbearbeitet werden.

Wenn dir das Problem bekannt vorkommt, liegt das daran, dass ich immer noch oder schon wieder an der gleichen Tabelle herumbastele, die jetzt gerade plötzlich in anderer Weise dargestellt werden muss. Gleiche Tabelle, aber jedes Mal ein anderes Problem.

Bevor ich euch jetzt weitere Arbeit damit mache nach Lösungen zu suchen werde ich - nur nicht heute - erst mal die Lösungen ausprobieren, die ich schon habe.

Stephanie

Hallo Stephanie,

Als Ergebnis will ich folgendes (in welcher Spalte ist egal,

okay.

zu Bearbeitungszwecken wurde die Farbspalte ohnehin einzeln in
eine Tabelle kopiert)

? Hä?

Zelle A1
rot

Zelle A2
gelb

Zelle A3
gelb blau

Deine Ausgansfrage war/ist aber eine andere, Was ist aus Brot un Rotfabrik bzw. rotes geworden?

Zelle A3 mit zwei Farben muss dann zu einem späteren Zeitpunkt
noch nachbearbeitet werden.

Warum nicht gleich und wie soll es nachbearbeitet werden?

Wenn dir das Problem bekannt vorkommt, liegt das daran, dass
ich immer noch oder schon wieder an der gleichen Tabelle
herumbastele, die jetzt gerade plötzlich in anderer Weise
dargestellt werden muss. Gleiche Tabelle, aber jedes Mal ein
anderes Problem.

Aha.

Bevor ich euch jetzt weitere Arbeit damit mache nach Lösungen
zu suchen werde ich - nur nicht heute - erst mal die Lösungen
ausprobieren, die ich schon habe.

Okay, gut’s Nächtle :smile:

Gruß
Reinhard

Hallo,

zu Bearbeitungszwecken wurde die Farbspalte ohnehin einzeln in
eine Tabelle kopiert)

? Hä?

Ich habe einmal die Spalte markiert, kopiert und in eine neue Tabelle eingefügt (oder mittlerweile sind es schon 5 in verschiedenen Bearbeitungsstadien), um daran nach Belieben herumbasteln zu können und nicht meine Haupttabelle zu verschandeln.

Wenn ich die Farben isoliert habe kopiere ich die in eine neu kreierte Spalte in die Haupttabelle zurück.

Zelle A3 mit zwei Farben muss dann zu einem späteren Zeitpunkt
noch nachbearbeitet werden.

Warum nicht gleich und wie soll es nachbearbeitet werden?

Die Tabelle wird zu verschiedenen Zwecken benötigt.
In einer Variante darf pro Zelle nicht mehr als eine Farbe stehen, weil die Farbe in Nummern umgewandelt werden muss (nach welchen Kriterien ich mich für welche Farbe entscheide muss ich noch überlegen), in einer anderen Variante bleiben die Farbnamen stehen und da sind zwei Farben in einer Zelle OK.

Stephanie

Hallo Stephanie,

Ich habe einmal die Spalte markiert, kopiert und in eine neue
Tabelle eingefügt (oder mittlerweile sind es schon 5 in
verschiedenen Bearbeitungsstadien), um daran nach Belieben
herumbasteln zu können und nicht meine Haupttabelle zu
verschandeln.

Wenn ich die Farben isoliert habe kopiere ich die in eine neu
kreierte Spalte in die Haupttabelle zurück.

das brauchst du doch nicht. Lade mal eine Beispielmappe hoch wo Blatt1 deiner Originaltabelle in der Struktur entspricht.
In Blatt2 trägst du manuell ein wie Blatt1 nach einem makro oder sonstigem aussehen sollte.

Zelle A3 mit zwei Farben muss dann zu einem späteren Zeitpunkt
noch nachbearbeitet werden.

Warum nicht gleich und wie soll es nachbearbeitet werden?

Die Tabelle wird zu verschiedenen Zwecken benötigt.
In einer Variante darf pro Zelle nicht mehr als eine Farbe
stehen, weil die Farbe in Nummern umgewandelt werden muss
(nach welchen Kriterien ich mich für welche Farbe entscheide
muss ich noch überlegen), in einer anderen Variante bleiben
die Farbnamen stehen und da sind zwei Farben in einer Zelle
OK.

Noch unklar, macht aber nix, dann leg halt noch Blatt3, Blatt4, usw. an und trage da manuell ein wie Blatt1 aussehen soll bzw. die heraugefilterten daten nach dieser „Farb“-Wahl oder was das ist.

Bedenke, ich, wir sehen deine Tabelle nicht und wissen nichts was du im Bezug auf die tabelle so denkst und planst…

Gruß
Reinhard

Hallo,

ja, ich habe schließlich auch festgestellt, dass für dieses Problem kein rumkommen um Basic und Makros war. Während mir die Benutzung von Makros im Allgemeinen erklärt wurde, habe ich dann auch einen Makro im besonderen bekommen, der alle Farben in allen Zellen findet, auch wenn sie mehrfach vorkommen.

Problem gelöst.

Stephanie

Hallo Stephanie,

ja, ich habe schließlich auch festgestellt, dass für dieses
Problem kein rumkommen um Basic und Makros war.

so sehe ich das nicht unbedingt. Mit Code geht es m.E. halt einfacher. Z.B. Schleifen zu basteln u.ä. oder nach Suchmustern zu suchen als mit Funktionen von OO oder Excel.

Während mir
die Benutzung von Makros im Allgemeinen erklärt wurde, habe
ich dann auch einen Makro im besonderen bekommen, der alle
Farben in allen Zellen findet, auch wenn sie mehrfach
vorkommen.

Deine Ausgangsfrage galt aber auch Deklinationen oder sonem Zeugs.

Zeig mal den Code, interessiert die Mitleser und das Archiv.

Gruß
Reinhard