Seite 1 von 2

Suchen&Ersetzen Syntax in Kombination mit WENN-Befehl?

Verfasst: Do 30. Apr 2015, 12:16
von DonCarbon
Hallo liebe Leute,

Dies ist mein erster Post in diesem Forum, deswegen eine kurze Vorstellung meinerseits.
Ich bin 25, Student der Geologie an der Bergakademie Freiberg und schlage mich gerade mit der Aufbereitung alter Bohrungslogs herum.
Ich habe ein Schichtenverzeichnis (um die 7000 Zeilen) von alten Bohrungen und wollte mir die Aufbereitung via Formel etwas erleichtern.
Es geht mir darum, dass bei einer bestimmten Schichtbezeichnung ein bestimmter Wert in eine andere Zeile geschrieben wird.

z.B. so: WENN(B2="Sandstein";"4a";"")ODER(WENN(B2="Granit";"5b";"")) das ganze wird natürlich noch Verschachtelter.

Jetzt müsste ich für alle Variationen von Sandstein oder Granit aber eine extra Verschachtelung machen und das wird mir zu lang.
Gibt es eine Möglichkeit das über eine Ähnlichkeitsfunktion (á la Suchen&Ersetzen) zu verkürzen? Also das allen Wörtern die z.B. Granit enthalten die 5b zugewiesen wird?
Ich hoffe ich habne mich einigermaßen Verständlich ausgedrückt.

Viele Grüße,
DC

Re: Suchen&Ersetzen Syntax in Kombination mit WENN-Befehl?

Verfasst: Do 30. Apr 2015, 13:41
von miesepeter
Hallo,

hast du schon mal mit SVERWEIS() gearbeitet? Das könnte evtl. dein Problem lösen.

Ciao

Re: Suchen&Ersetzen Syntax in Kombination mit WENN-Befehl?

Verfasst: Do 30. Apr 2015, 17:52
von DonCarbon
Hallo miesepeter,

Ansich klingt das schon nicht schlecht, aber mir ist noch nicht ganz klar was dieser Befehl macht.
Ich will ja aus Spalte B auslesen und aufgrund des Textstrings der drinnen steht, eine Ausgabe in Spalte A haben.
Insofern stimmt das ja überein.
Jetzt kommt aber hinzu, dass ich Begriffe habe, die sich wiederholen, ungeordnet sind und dies auch bleiben müssen.

Deswegen ja die Frage ob bzw. wie ich so einen regulären Ausdruck in einem WENN Befehl verwenden kann.

Re: Suchen&Ersetzen Syntax in Kombination mit WENN-Befehl?

Verfasst: Fr 1. Mai 2015, 17:44
von Wanderer
Hallo,

für Deine ursprüngliche Idee müsstest Du die Funktion SUCHEN() oder FINDEN() verwenden.
Damit könntest Du tatsächlich einen Code zuweisen, wenn irgendwo im Text "sandstein" vorkommt, egal
ob als Teil eines Tonsandsteins oder allein. Die WENN-Verschachtelung bleibt aber, sie wird nur kürzer.
Reguläre Ausdrücke kannst Du dabei nicht verwenden, werden aber auch nicht gebraucht.

Für Miesepeters Vorschlag musst Du Dir selbst eine zweite Tabelle anlegen, also etwa in Tabelle2
Sandstein > 4a
Granit > 5b
usw...

Mit SVERWEIS in Tabelle1 (deinen Bohrdaten) kannst Du nun jeweils nach dem Wert in der neuen Tabelle suchen
und Dir die daneben stehende Codenummer ausgeben lassen - weshalb DU in SVERWEIS eine Spaltennummer angeben musst.

Die Logik wird also umgekehrt: Du suchst nicht mehr, was von den vielen Dingen in deiner Zeile steht.
Statt dessen sucht Du nur die passende Codenummer ind Deinem neuen Code-Verzeichnis.
Die Formel wird einfacher und bei Erweiterungen viel leichter zu warten.
Zum Einsteigen in SVERWEIS s. z.B: http://www.ooowiki.de/CalcFunktionenTabellen.html
! Tabelle immer als "unsortiert" angeben, sonst gibt es keinen Fehler wenn Werte fehlen.

Haken bei der SVERWEIS-Methode. Du musst in der Codetabelle alle Schreibweisen angeben, die vorkommen. Sandstein in Tonsandsteinfinden klappt nicht.
Zweites Problem: Falls Deine Daten ein Gemenge aus mehreren Elementen enthalten a la "Granit, Kalk, Sand" funktioniert es auch nicht.
In dem Fall würde ich empfehlen mal eine verkürzte (10-50-Zeilen) Variante Deiner Daten als ods-Datei hier hochzuladen.
Spekulieren über solche Dinge ist nämlich selten effektiv...

MfG, Jörn

MfG, Jörn

Re: Suchen&Ersetzen Syntax in Kombination mit WENN-Befehl?

Verfasst: Fr 1. Mai 2015, 18:32
von lorbass
Wanderer hat geschrieben:für Deine ursprüngliche Idee müsstest Du die Funktion SUCHEN() oder FINDEN() verwenden. (…) Reguläre Ausdrücke kannst Du dabei nicht verwenden, werden aber auch nicht gebraucht.
SUCHEN() kann im Gegensatz zu FINDEN() auch RegEx verarbeiten, sofern unter Extras → Optionen (bzw. Einstellungen) → LibreOffice Calc→ Berechnen die Option [✓] Reguläre Ausdrücke in Formeln ermöglichen aktiviert ist.

Mit dem RegEx ".*sand.*" bzw. ".*"&X2&".*", wenn der Suchbegriff "sand" in Zelle X2 steht, findet SUCHEN() also z.B. „Buntssandstein“, „Heidesand“, „Sandkasten“, „Sandmännchen“, … :mrgreen:

Im übrigen halte ich ein vielfach Wenn-Dann-Sonst-Konstrukt auch für zu abenteuerlich. Ich schließe mich dem Wunsch nach einer Beispieldatei an.

Gruß
lorbass

Re: Suchen&Ersetzen Syntax in Kombination mit WENN-Befehl?

Verfasst: Sa 2. Mai 2015, 15:23
von DonCarbon
Anbei ist die Beispieldatei, PETNUM soll die vereinheitliche Gesteinsbezeichung sein, PETVERB ist die uneinheitliche Bezeichung.

@Wanderer
Inzwischen habe ich mir über einen Datenfilter mal die gesamten Einzelbegriffe rausgeholt.
Das sind fast 200 unterschiedliche Begriffe, die nach Legende in 20 verschiedene Einheiten unterteilt werden.
Wäre also auch noch ziemlich viel Zeitaufwand erstmal die Definitionen zu erstellen.

Laut diesem Link: https://help.libreoffice.org/Calc/Sprea ... e#SVERWEIS
funktioniert die Funktion SVERWEIS() auch mit regulären Ausdrücken.

@lorbass
Wie würde das ganze denn mit SUCHEN() aussehen?

Edit:
By the way, eine (relativ) kurze WENN() Verschachtelung ist ja schonmal was feines, wenn ich da "nur" 20 Begriffe unterbringen muss.
Wenn es natürlich noch kürzer geht, wäre es noch viel besser. :)

Re: Suchen&Ersetzen Syntax in Kombination mit WENN-Befehl?

Verfasst: So 3. Mai 2015, 14:07
von lorbass
Die Beispieldatei ist nicht sehr hilfreich. Stelle bitte dar, was du hast und wie du dir das Endergebnis vorstellst – ohne Formeln, nur Zahlen, Begriffe hinschreiben. Dann versuchen wir zu klären, wie du dahin kommst.

Gruß
lorbass

Re: Suchen&Ersetzen Syntax in Kombination mit WENN-Befehl?

Verfasst: Mo 4. Mai 2015, 20:01
von Wanderer
HAllo,

ich hab mal etwas geraten und Dir die modifizierte Beispieldatei mit SVERWIS angehängt.
Da ich bisher nur 5 fiktive Codes in die 2. Tabelle gesetzt habe, gibt es natürlich haufenweise NV-Fehler für nicht gefundenen Werte.
Kern ist folgende Formel z.B. in B1:

Code: Alles auswählen

=SVERWEIS(B2;Codetabelle.$A$2:$B$200;2;0)
die sich den zum Wert in B2 passenden Eintrag aus der
Codetabelle (200 Einträge in Spalten A und B) sucht und den danebenstehenden (Spalte 2) Eintrag zurückgibt. Codetabelle ist nicht sortiert (0), wobei ich
die Null auch bei sortierten Tabellen empfehle!
DonCarbon hat geschrieben: By the way, eine (relativ) kurze WENN() Verschachtelung ist ja schonmal was feines, wenn ich da "nur" 20 Begriffe unterbringen muss.
Wenn es natürlich noch kürzer geht, wäre es noch viel besser. :)
Ich schätze die SVERWEIS-Tabelle als wesentlich wartungsfreundlicher ein.
DU kannst ja mal folgendes erweitern:

Code: Alles auswählen

=WENN(B2="Aufschuettung";"1a";WENN(B2="Loeslehm";"2b";WENN(B2="Feinsand";"3c";"--")))
Wenn es Dir besser gefällt musst Du "nur" noch die Vergleiche B2=" " durch Aufrufe von SUCHEN mit passenden Mustern ersetzen.
Und ob es leichter ist die Suchmusterliste zusammenzustellen, kannst derzeit nur Du wissen.

MfG, Jörn

Re: Suchen&Ersetzen Syntax in Kombination mit WENN-Befehl?

Verfasst: Mo 4. Mai 2015, 21:57
von DonCarbon
Hey, danke euch für die Antworten und die Mühe :)
Ich werde morgen nochmal eine Aussagekräftigere Beispieldatei hochladen und mehr dazu sagen.

Re: Suchen&Ersetzen Syntax in Kombination mit WENN-Befehl?

Verfasst: Di 5. Mai 2015, 11:54
von DonCarbon
Hallo liebe Leute,

Anbei also die Beispieldatei mit Legende und Beschreibung hier.
Wie schon gesagt, soll die Spalte PETNUM die petrographische Kurzbezeichnung enthalten.
Die Spalte PETVERB enthält die inhomogenen petrographischen Bezeichnungen der Bearbeiter.

In der Legende (Spalte E) sind die petrographischen Kurzbezeichnungen.
In Spalte F sind die homogenisierten pet. Bezeichnungen.

Ziel ist es, die in der Legende stehenden Kurzbezeichnungen automatisch in die Spalte PETNUM zu übertragen.
Dies soll entsprechend den homogenisierten Bezeichungen in der Legende geschehen.

Für ein paar Gesteine habe ich jetzt einfach mal Zuweisungen händisch hinzugefügt.
Mir scheint die Methode mit SVERWEIS() und Legende könnte Zielführend sein, wenn dieser Befehl damit umgehen kann, dass die Bezeichnungen nicht 100% übereinstimmen.