Tabelle nach einem Wort in der Zelle filtern

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

Defender19
**
Beiträge: 20
Registriert: Do, 28.06.2018 14:07

Tabelle nach einem Wort in der Zelle filtern

Beitrag von Defender19 »

Einen wunderschönen Tag Zusammen,

ich hoffe mir kann jemand helfen. Folgendes Problem versuche ich zu lösen.
Ich habe in mehreren Spalten und Zeilen verschiedene Inhalte. Nun möchte ich
gerne erreichen, dass ich nach einem Wort in der Zeile suchen kann und er mir
die Tabelle so filtert, dass nur noch die Zeilen mit dem gesuchten Wort erscheinen.

Das Problem ist, dass der Filter momentan dann nur funktioniert, wenn der genaue
Zellinhalt, beim Suchbegriff eingegeben worden ist, aber ich möchte auch die Suche
nach dem Schlüsselwort mit einbinden.


Select Case Op
Case "<"
Filterfeld.operator = com.sun.star.sheet.FilterOperator.LESS
Wert = Right(Wert,Len(Wert)-1)
Filterfeld.StringValue = Wert
Case ">"
Filterfeld.operator = com.sun.star.sheet.FilterOperator.GREATER
Wert = Right(Wert,Len(Wert)-1)
Filterfeld.StringValue = Wert

Case Else
Filterfeld.operator = com.sun.star.sheet.FilterOperator.EQUAL

Kann mir jemand dabei helfen?

Grüßle Defe
mikeleb
*******
Beiträge: 1315
Registriert: Fr, 09.12.2011 16:50

Re: Tabelle nach einem Wort in der Zelle filtern

Beitrag von mikeleb »

Hallo,

es gibt auch noch die Operatorengruppe FilterOperator2 und dabei auch

Code: Alles auswählen

com.sun.star.sheet.FilterOperator2.CONTAINS
Damit lassen sich Zellen filtern die einen gewissen (Teil-)String enthalten.
Wenn du auf eine Tabelle mal den Standardfilter anwendest findest du dort den Operator "enthält".
Gruß,
mikeleb
Defender19
**
Beiträge: 20
Registriert: Do, 28.06.2018 14:07

Re: Tabelle nach einem Wort in der Zelle filtern

Beitrag von Defender19 »

Guten Morgen,

vielen Dank, dass du dich meinem Problem annimmst.
Wenn du auf eine Tabelle mal den Standardfilter anwendest findest du dort den Operator "enthält".?
Das verstehe ich leider nicht ganz so. Wo setze ich den Standardfilter? und den Operator mit "enthält".? Bin leider nicht
so bewandert. Habe für das Makros echt Blut und Wasser geschwitzt...und bin schon froh, dass er die Tabelle durchsucht.

Kannst du mir das erklären, wie ich da weitermachen muss?

Gruß Defe
nikki
******
Beiträge: 787
Registriert: Do, 05.03.2015 10:42

Re: Tabelle nach einem Wort in der Zelle filtern

Beitrag von nikki »

Hallo,
2018-06-29 09_59_38-Unbenannt 1 - OpenOffice Calc.gif
2018-06-29 09_59_38-Unbenannt 1 - OpenOffice Calc.gif (12.72 KiB) 36782 mal betrachtet
Gruß

---------------------------------------------------------
Win.10 Prof. 64-bit, AOO 4.1.7, LO 6.3.4 (x64)
Defender19
**
Beiträge: 20
Registriert: Do, 28.06.2018 14:07

Re: Tabelle nach einem Wort in der Zelle filtern

Beitrag von Defender19 »

Hallo

ich habe jetzt dank Nikki die Filtereinstellung gefunden, allerdings
weiß ich trotzdem nicht weiter. Wie muss ich dass in meinem Makro
einbauen und wie muss ich den Filter setzen?

Bitte, bitte helft mir

Gruß Defe
mikeleb
*******
Beiträge: 1315
Registriert: Fr, 09.12.2011 16:50

Re: Tabelle nach einem Wort in der Zelle filtern

Beitrag von mikeleb »

Hallo,
auf welchem Bereich, auf welcher Tabelle willst du den Filter ansetzen? Hast du eventuell einen Datenbankbereich definiert?
Gruß,
mikeleb
mikeleb
*******
Beiträge: 1315
Registriert: Fr, 09.12.2011 16:50

Re: Tabelle nach einem Wort in der Zelle filtern

Beitrag von mikeleb »

Hallo,
angenommen, du möchtest auf dem Tabellenblatt 1 den Bereich A1:B25 danach filtern, ob in die Zellen der Spalte B ein bestimmtes Wort enthalten.

Code: Alles auswählen

Sub Filter
	odoc=thiscomponent
	'Bereich der gefiltert werden soll
	quelle=odoc.sheets(1).getcellrangebyname("A1:B25")
	'Erstellen des Filters
	oFilter = quelle.createFilterDescriptor(True)
	'Überschriftenzeile gibt es 
	oFilter.ContainsHeader=true
	'Filterkriterium
	aFilterFields = DimArray(0)
	aFilterFields(0) = new com.sun.star.sheet.TableFilterField2
	aFilterFields(0).Connection = com.sun.star.sheet.FilterConnection.AND
	aFilterFields(0).field=1
	aFilterFields(0).IsNumeric = false
	aFilterFields(0).Operator = com.sun.star.sheet.FilterOperator2.CONTAINS
	aFilterFields(0).stringvalue="abc"	
	oFilter.setFilterFields2(aFilterFields)
	'Filtern
	quelle.filter(oFilter)
End Sub
Gruß,
mikeleb
Defender19
**
Beiträge: 20
Registriert: Do, 28.06.2018 14:07

Re: Tabelle nach einem Wort in der Zelle filtern

Beitrag von Defender19 »

Hallo,

ich habe jetzt mal eine kleine Versuchsdatei hochgeladen. Im Zellenbereich A3:K6
kann gefiltert werden. Allerdings wäre es mir wichtig, dass der Filterbereich sich
eben auch auf das Schlüsselwort bezieht.

Vielen Dank Mikeleb,für das Makro, allerdings bin ich wahrscheinlich zu blöd, dein Makro
einzubauen. Kannst du mir da noch einmal unter die Arme greifen.

Gruß Defe
Dateianhänge
test_Lagerbestand.ods
(16.32 KiB) 164-mal heruntergeladen
mikeleb
*******
Beiträge: 1315
Registriert: Fr, 09.12.2011 16:50

Re: Tabelle nach einem Wort in der Zelle filtern

Beitrag von mikeleb »

Hallo,
dafür brauchst du gar kein Makro. Du hast ja schon einen Spezialfilter aufgesetzt. Ich habe den Filterkriterienbereich etwas erweitert und beim Filter die Option "Reguläre Ausdrücke" aktiviert. Damit hast du die Möglichkeit nach Zellen zu Filtern, die eine Wortgruppe enthalten. Dazu musst du als Filterkriterium nur .* vor und hinter die Wortgruppe setzen.
Weiteres zum Spezialfilter liest du hier: http://www.ooowiki.de/SpezialFilter.html
Bleibt noch die Aktualisierung der Daten nach dem Ändern der Filterkriterien. "Per Hand" würdest du eine der Zellen im Datenbereich anwählen udn dann im Menü ->Daten->Bereich aktualisieren wählen. Man kann aber auch bei der Schaltfläche als Aktion "Dokument/Webseite öffnen" einstellen und bei URL ".uno:DataAreaRefresh" und schon passiert beim Klick auf die Schaltfläche die Filterei.
Dateianhänge
test_Lagerbestand_neu.ods
(22.87 KiB) 259-mal heruntergeladen
Gruß,
mikeleb
Defender19
**
Beiträge: 20
Registriert: Do, 28.06.2018 14:07

GELÖST: Tabelle nach einem Wort in der Zelle filtern

Beitrag von Defender19 »

Guten Morgen Mikeleb,

vielen Dank für deine Antwort. Das klappt hervorragend.
Haste echt toll hinbekommen.....vielen lieben Dank.

Gruß Defe

Nun kann ich den Thread auf gelöst setzen
Antworten