Frage stellen
0

Calc: Zeilen auswählen, in denen Zellen eine bestimmte Farbe haben

gefragt 2020-12-21 10:21:27 +0100

Harald_LibreOffice Gravatar-Bild

updated 2020-12-22 15:16:26 +0100

Guten Tag miteinander,

W10, LO 6.4

Situation

Über eine RegEx-Suche habe ich in einer Spalte Zeilen markiert, wie das so üblich ist. Einer Tastenkombination habe ich eine bestimmte Farbe zugewiesen. Drücke ich nun diese Tastenkombination, so werden alle vom Regex-Ausdruck markierten Zellen (einer bestimmten Spalte) eingefärbt. So weit so gut.

Frage

Ist es möglich nur alle diejenigen Zeilen anzeigen zu lassen, die eine zugewiesene Farbe aufweisen? Diese Auswahl sollte noch im Kombination mit weiteren Kriterien (ODER) bzw.

Daten > weitere Filter > Standardfilter

angewendet werden.

Habe jetzt hier nachträglich eine Datei angehängt, da dies in den Kommentaren nicht möglich ist.

C:\fakepath\TestLibreOfficeREGAUS.ods

LG Harald

Bearbeiten Tags ändern Melden schließen vereinen löschen

1 Antwort

2

geantwortet 2020-12-21 11:27:36 +0100

Opaque Gravatar-Bild

updated 2020-12-22 15:50:40 +0100

Hallo Harald,

Nein - das ist mit Filtern nicht möglich. Es gibt in LibreOffice nicht mal die Möglichkeit mit einer vorgefertigten Formel die Farbe einer Zelle zu ermitteln (Mit einer benutzerdefinierten Funktion, i.e. mit Makros, geht das natürlich). Du könntest also lediglich mit einer Hilfsspalte und einer benutzerdefinierten Funktion ala ZELLFARBE() die Farbe ermitteln und dann mit dieser Farbe Filtern.

Randbemerkung: Persönlich verstehe ich fast nie, warum man zwar ein Kriterium hat, Zellen in einer bestimmten Farbe einzufärben, dann aber dasselbe Kriterium nicht für weitere Funktionen nutzt (hier für die Filterung) und sei es über eine Hilfsspalte, weil das Kriterium zu komplex ist.

[Update] - TestDatei Funktionsspalte mit IF

C:\fakepath\TestLibreOfficeREGAUS-MitIF.ods

Mit Parametrisierung der Funktionsspalte:

C:\fakepath\TestLibreOfficeREGAUS-MitIF+Parametrisierung.ods

Getestet mit LibreOffice:

Version: 6.4.7.2; Build-ID: 639b8ac485750d5696d7590a72ef1b496725cfb5
CPU-Threads: 8; BS: Linux 5.3; UI-Render: GL; VCL: kf5; 
Gebietsschema: de-DE (de_DE.UTF-8); UI-Sprache: de-DE; Calc: threaded
Bearbeiten Melden löschen Link mehr

Kommentare

Hallo Opaque,

zu Deiner Randbemerkung:

wüsste ich wie ich das Ergebnis der Abfrage (markierte Zellen einer Spalte aus über 1000 Zeilen) für weitere Funktionen nutzen kann, so würde ich das tun. Eine Hilfsspalte wäre ja gleich erstellt. Vielleicht können wir hier so ein Szenario entwickeln? Also: Ich habe einen RegEx-Ausdruck: Hier zum Beispiel

(.Linearf. Wagen.)|(.Kegelschmiernippel.)|(.Schmiernippel.)|(.Schmierverteiler.kompl.)|(.Linearführung Wagen.)|(.Kugelgewindemutter.)|(.Zahnstange Teilung.)|(.Lineartisch.*)

Diesen gebe ich in das Suchen und Ersetzen-Fenster ein mit der Option Reguläre Ausdrücke. Ich drücke 'Alle Suchen' und bekomme in der entsprechenden Spalte die Zeilen markiert.

Wäre es denkbar in die Hilfsspalte diesen RegEx-Ausdruck mit einer Wenn - Dann - Funktion zu platzieren und sich das Ergebnis mit 0 oder 1 anzeigen zu lassen?

LG Harald

Harald_LibreOffice Gravatar-BildHarald_LibreOffice ( 2020-12-22 08:21:20 +0100 )Bearbeiten

Hallo Opaque,

habe mal versucht in einer Extra-Spalte eine Wenn-Funktion aufzubauen. Habe die Fehler-Meldung 508 bekommen. Calc hat mir vorgeschlagen die Formel zu korrigieren. Danach kam die Fehler-Meldung 511, hmm? Ich vermute, dass das Problem damit zusammen hängt, dass ich nicht weiß wie man RegEx-Ausdrücke in eine Wenn-Funktion einbindet. Calc schlägt ja eine Zelle vor, auf die man sich beziehen kann. Habe ich auch ausprobiert: =WENN($Tabelle2.A1;1;0)

Führt aber auch nicht zum Ergebnis

Hilfe :-)

Gruß Harald

Harald_LibreOffice Gravatar-BildHarald_LibreOffice ( 2020-12-22 08:48:18 +0100 )Bearbeiten
1

Hallo Harald,

ich würde denken das die REGAUS() Funktion genau das macht was du brauchst. In deinem Fall würde das dann so aussehen. Ich nehme hier an das deine Daten in der Spalte A sind.

=REGAUS(A1;"(.Linearf. Wagen.)|(.Kegelschmiernippel.)|(.Schmiernippel.)|(.Schmierverteiler.kompl.)|(.Linearführung Wagen.)|(.Kugelgewindemutter.)|(.Zahnstange Teilung.)|(.Lineartisch.*)";1;"g")

Ich hoffe das klappt!

lg Jürgen

dscheikey Gravatar-Bilddscheikey ( 2020-12-22 12:07:11 +0100 )Bearbeiten

Hallo Jürgen,

größtenteils klappt das. Dort wo ein Treffer gelandet wird, steht auch in der Zelle eine "1". Aber bei allen anderen wird der Text aus der Bezugsspalte angezeigt. So ähnlich steht das ja auch in der LO-Hilfe. Aber die ist in diesem Fall schwer zu verstehen. Als Workaround kann ich es verwenden. Aber schöner wäre wenn bei "Nichttreffern" eine "0" stehen würde.

By the way; ich hatte den falschen RegEx-Ausdruck vorgegeben. Hier nochmals der Richtige:

(.*Linearf. Wagen.*)|(.*Kegelschmiernippel.*)|(.*Schmiernippel.*)|(.*Schmierverteiler.*kompl.*)|(.*Linearführung Wagen.*)|(.*Kugelgewindemutter.*)|(.*Zahnstange Teilung.*)|(.*Lineartisch.*)|(.*Kugelgewinde.*)|(.*spindel.*)

Danke Jürgen

Harald_LibreOffice Gravatar-BildHarald_LibreOffice ( 2020-12-22 14:21:49 +0100 )Bearbeiten

Aber bei allen anderen wird der Text aus der Bezugsspalte angezeigt.

Na ja, ein IF() drum herum sollte das lösen ( =IF(REGAUS(A1;......)=A1;"";1)) - Ist immer etwas schwierig, ohne eine Beispieldatei eine voll-funktionsfähige Lösung hinzuschreiben.

Opaque Gravatar-BildOpaque ( 2020-12-22 14:28:09 +0100 )Bearbeiten

Hallo Opaque,

habe eine Datei zusammengebastelt. Habe sie im ersten Beitrag angehängt. Deinen Vorschlag habe ich probiert, sind aber nur Fehlermeldungen gekommen.

Die fakepath-Datei ist ohne If-Funktion

LG Harald

Harald_LibreOffice Gravatar-BildHarald_LibreOffice ( 2020-12-22 15:18:16 +0100 )Bearbeiten

Deinen Vorschlag habe ich probiert, sind aber nur Fehlermeldungen gekommen.

Keine Ahnung, was Du gemacht hast - Ich habe jetzt das IF um den REGAUS(), wie in meinem Kommentar beschrieben, drum herum geschrieben und das Ergebnis findest Du als Update in meiner Antwort als Datei unter [Update] angehängt und zeigt das was ich mit dem IF() erreichen wollte: Zeige nichts ( "" - Du könntest auch eine 0 verwenden) oder eine 1 - Dann legst Du einen schlichten Autofilter um die Tabelle und selektierst nach 1. Das Ganze kann man dann noch parametrisieren, in dem man den regulären Ausdruck in eine separate Zelle schreibt und jeweils auf diese Zelle referenziert. Das habe ich in der zweiten Datei exemplarisch gemacht.
Und am Ende kannst Du Deine Farbgebung über eine Bedingte Formatierung noch an den Wert 1 in der Funktionsspalte hängen.

Opaque Gravatar-BildOpaque ( 2020-12-22 15:28:40 +0100 )Bearbeiten

Hallo miteinander,

danke an Euch beide.

Das einzige was ich anders gemacht habe (meines Wissens) ist dass ich "if" anstatt "wenn" geschrieben hatte. Aber mir raucht der Kopf und ich werde mich bei Bedarf nächstes Jahr wieder melden.

Schöne Weihnachten und einen gute Rutsch ins neue Jahr und alle Gesundheit

LG Harald

Harald_LibreOffice Gravatar-BildHarald_LibreOffice ( 2020-12-22 16:10:35 +0100 )Bearbeiten

Tja - immer dieses Babylon. Ich habe auch nicht daran gedacht, dass es Nutzer gibt, die die deutschen Funktionsnamen verwenden. Ich verwenden nur die englischen Namen und die werden automatisch übersetzt, wenn Du meine Dateien lädst. Sorry ...

Opaque Gravatar-BildOpaque ( 2020-12-22 16:18:36 +0100 )Bearbeiten

Danke Opaque, hab's durchprobiert und es funktioniert alles.

Danke auch nochmals an dscheikey

Gruß Harald

Harald_LibreOffice Gravatar-BildHarald_LibreOffice ( 2021-01-04 09:05:11 +0100 )Bearbeiten
Registrieren oder einloggen, um zu antworten

Antwortwerkzeuge

1 Beobachter

Statistik

Gefragt: 2020-12-21 10:21:27 +0100

Angesehen: 86 Mal

Aktualisiert: Dec 22 '20