FIlter programmieren

Das Tabellenkalkulationsprogramm

Moderator: Moderatoren

Karolus
********
Beiträge: 7532
Registriert: Mo, 02.01.2006 19:48

Re: FIlter programmieren

Beitrag von Karolus »

Hallo
Es gibt -->Daten-->Filter....

Ebenso gibt es die Möglichkeit über '-->Extras-->Makros-->Makros aufzeichnen..'
verschiedene Aktionen aufzuzeichnen.

Schau mal wie weit du damit kommst, bei konkreten Detailfragen helfen wir gerne weiter, (je nach Fragestellung evtl. aber gleich ins Basic und Java Forum posten)

Gruß Karo
LO7.4.7.2 debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
Charly
*****
Beiträge: 450
Registriert: Di, 20.01.2004 13:14
Wohnort: München

Re: FIlter programmieren

Beitrag von Charly »

Hallo!

Ich habe mich mal diesem Thema zusammen mit einem Forumsteilnehmer angenommen.
Vielleicht ist etwas darunter, was du gebrauchen kannst.

viewtopic.php?f=2&t=22421

Gruß
Charly
Karolus
********
Beiträge: 7532
Registriert: Mo, 02.01.2006 19:48

Re: FIlter programmieren

Beitrag von Karolus »

Hallo

Wir kommen wahrscheinlich schneller voran, wenn du mal die konkreten Filterkriterien beschreibst, und auch, welche Art von Daten in Spalte 3 vorkommen.

Gruß Karo
LO7.4.7.2 debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
Karolus
********
Beiträge: 7532
Registriert: Mo, 02.01.2006 19:48

Re: FIlter programmieren

Beitrag von Karolus »

Hallo
Schau doch mal ins Thema das Charlie bereits gepostet hat, viewtopic.php?f=2&t=22421
da stehen doch alle Infos die du benötigst.

Gruß Karo
LO7.4.7.2 debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
Karolus
********
Beiträge: 7532
Registriert: Mo, 02.01.2006 19:48

Re: FIlter programmieren

Beitrag von Karolus »

Hallo
Ich bin grad faul und hab deshalb nur Code aufgezeichnet, und zwar folgende Routine:
1 Selektion von C1:C2000
2 -->suchen und ersetzen ->suche nach: '^[0-9]{2,}|[4-9]$' , [x]nur in Selektion , [x]regulärer Ausdruck , "suche alle"
3 --Kontext-->Zeilen ausblenden

Code: Alles auswählen

sub suchen_und_ausblenden

dim document   as object
dim dispatcher as object

document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

dim args2(0) as new com.sun.star.beans.PropertyValue
args2(0).Name = "ToPoint"
args2(0).Value = "C1:C2000"

dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args2())

dim args1(17) as new com.sun.star.beans.PropertyValue
args1(0).Name = "SearchItem.StyleFamily"
args1(0).Value = 2
args1(1).Name = "SearchItem.CellType"
args1(1).Value = 0
args1(2).Name = "SearchItem.RowDirection"
args1(2).Value = true
args1(3).Name = "SearchItem.AllTables"
args1(3).Value = false
args1(4).Name = "SearchItem.Backward"
args1(4).Value = false
args1(5).Name = "SearchItem.Pattern"
args1(5).Value = false
args1(6).Name = "SearchItem.Content"
args1(6).Value = false
args1(7).Name = "SearchItem.AsianOptions"
args1(7).Value = false
args1(8).Name = "SearchItem.AlgorithmType"
args1(8).Value = 1
args1(9).Name = "SearchItem.SearchFlags"
args1(9).Value = 71680

args1(10).Name = "SearchItem.SearchString"
args1(10).Value = "^[0-9]{2,}|[4-9]$"

args1(11).Name = "SearchItem.ReplaceString"
args1(11).Value = ""
args1(12).Name = "SearchItem.Locale"
args1(12).Value = 255
args1(13).Name = "SearchItem.ChangedChars"
args1(13).Value = 2
args1(14).Name = "SearchItem.DeletedChars"
args1(14).Value = 2
args1(15).Name = "SearchItem.InsertedChars"
args1(15).Value = 2
args1(16).Name = "SearchItem.TransliterateFlags"
args1(16).Value = 1280
args1(17).Name = "SearchItem.Command"
args1(17).Value = 1

dispatcher.executeDispatch(document, ".uno:ExecuteSearch", "", 0, args1())

dispatcher.executeDispatch(document, ".uno:HideRow", "", 0, Array())
end sub
zur Übernahme siehe: hier, im Kapitel 'Quelltext übernehmen
und evtl. auch http://www.ooowiki.de/MakrosMitEinemKlick

Gruß Karo
LO7.4.7.2 debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
damuschong
**
Beiträge: 23
Registriert: Mo, 21.12.2009 13:04

Re: FIlter programmieren

Beitrag von damuschong »

soweit so gut ;) gibt es jetzt vielleicht noch einen trick, dass auch die Zeilen in denen in besagter spalte eine 0 oder nichts steht mit ausgeblendet wird ? is wahrscheinlich ne ziemlich doofe frage ;)

P.s, nicht die Zeilen mit 1 oder 2 oder 3 blieben stehen, sondern zbsp 10, 14, 19......
hylli
*******
Beiträge: 1672
Registriert: Mi, 22.02.2006 19:37

Re: FIlter programmieren

Beitrag von hylli »

Also ich mag mich ja irren, aber wäre das trotz allem nicht viel einfacher mit einem Standardfilter zu lösen?

Spalte C <= 3
und
Spalte C > 0

Eventuell noch unter Zusätze die Ausgabe definieren, fertig.

Natürlich kannst Du das dann auch als Makro aufzeichnen.

Hylli
Dateianhänge
standardfilter.odt
(58.09 KiB) 25-mal heruntergeladen
Zuletzt geändert von hylli am Di, 22.12.2009 09:32, insgesamt 1-mal geändert.
Ein Dankeschön für eine Lösung tut nicht weh!
Wer eine Lösung selbst findet, sollte die für die Nachwelt auch posten!

Geschäftlich: LibreOffice 6.0.x ("Still") unter Windows 10 64bit
Privat: LibreOffice 6.0.x ("Still") unter Linux Mint 19.x Cinnamon 64bit
damuschong
**
Beiträge: 23
Registriert: Mo, 21.12.2009 13:04

Re: FIlter programmieren

Beitrag von damuschong »

Das Problem ist ja, dass sich Filter mit dem Makros-recorder nicht aufzeichnen lassen. bzw, wenn man diese dann ausführt passiert nix ;(
hylli
*******
Beiträge: 1672
Registriert: Mi, 22.02.2006 19:37

Re: FIlter programmieren

Beitrag von hylli »

Hm, ok stimmt.

Aber der Filter ist ja so einfach, dass man den recht schnell zusammengebastelt hat, gleich bei welcher Datei. Wenn's natürlich komplexer wäre, dann wäre wahrscheinlich die Makrolösung zu bevorzugen.

Hylli
Ein Dankeschön für eine Lösung tut nicht weh!
Wer eine Lösung selbst findet, sollte die für die Nachwelt auch posten!

Geschäftlich: LibreOffice 6.0.x ("Still") unter Windows 10 64bit
Privat: LibreOffice 6.0.x ("Still") unter Linux Mint 19.x Cinnamon 64bit
damuschong
**
Beiträge: 23
Registriert: Mo, 21.12.2009 13:04

Re: FIlter programmieren

Beitrag von damuschong »

args1(10).Value = "^[0-9]{2,}|[4-9]$"

könnte es sein ,dass in dieser Zeile etwas nicht stimmt ?
hylli
*******
Beiträge: 1672
Registriert: Mi, 22.02.2006 19:37

Re: FIlter programmieren

Beitrag von hylli »

Nein, denn grundsätzlich funktioniert die Vorgehensweise bei mir, auch wenn mir der Suchstring mal wieder wie ein böhmisches Dorf vorkommt.

Hylli ;)
Ein Dankeschön für eine Lösung tut nicht weh!
Wer eine Lösung selbst findet, sollte die für die Nachwelt auch posten!

Geschäftlich: LibreOffice 6.0.x ("Still") unter Windows 10 64bit
Privat: LibreOffice 6.0.x ("Still") unter Linux Mint 19.x Cinnamon 64bit
damuschong
**
Beiträge: 23
Registriert: Mo, 21.12.2009 13:04

Re: FIlter programmieren

Beitrag von damuschong »

mein Problem mit dem bisherigen code ist, dass

1. nicht nach den Kriterien 1, 2, 3 in Splate 3 gefiltert wird
2. Zeilen die in Spalte 3 leer sind angezeigt werden

Kann mir jemand helfen ?

danke
damuschong
**
Beiträge: 23
Registriert: Mo, 21.12.2009 13:04

Re: FIlter programmieren

Beitrag von damuschong »

okay, jetzt musas ich nur noch die Leerzeichen ausblenden, wie könnte das klappen ?
Mein bisheriger coed sieht so aus

Code: Alles auswählen

sub suchen_und_ausblenden

dim document   as object
dim dispatcher as object

document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

dim args2(0) as new com.sun.star.beans.PropertyValue
args2(0).Name = "ToPoint"
args2(0).Value = "F1:F10000"

dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args2())

dim args1(17) as new com.sun.star.beans.PropertyValue
args1(0).Name = "SearchItem.StyleFamily"
args1(0).Value = 2
args1(1).Name = "SearchItem.CellType"
args1(1).Value = 0
args1(2).Name = "SearchItem.RowDirection"
args1(2).Value = true
args1(3).Name = "SearchItem.AllTables"
args1(3).Value = false
args1(4).Name = "SearchItem.Backward"
args1(4).Value = false
args1(5).Name = "SearchItem.Pattern"
args1(5).Value = false
args1(6).Name = "SearchItem.Content"
args1(6).Value = false
args1(7).Name = "SearchItem.AsianOptions"
args1(7).Value = false
args1(8).Name = "SearchItem.AlgorithmType"
args1(8).Value = 1
args1(9).Name = "SearchItem.SearchFlags"
args1(9).Value = 71680

args1(10).Name = "SearchItem.SearchString"
args1(10).Value = "^[0-9]{2,}|[4-9]|^0|0$|"

args1(11).Name = "SearchItem.ReplaceString"
args1(11).Value = ""
args1(12).Name = "SearchItem.Locale"
args1(12).Value = 255
args1(13).Name = "SearchItem.ChangedChars"
args1(13).Value = 2
args1(14).Name = "SearchItem.DeletedChars"
args1(14).Value = 2
args1(15).Name = "SearchItem.InsertedChars"
args1(15).Value = 2
args1(16).Name = "SearchItem.TransliterateFlags"
args1(16).Value = 1280
args1(17).Name = "SearchItem.Command"
args1(17).Value = 1

dispatcher.executeDispatch(document, ".uno:ExecuteSearch", "", 0, args1())

dispatcher.executeDispatch(document, ".uno:HideRow", "", 0, Array())
End Sub

Irgendwie müsste ich jetzt in dieser Zeile hinzufügen, dass auch leerzeichen betroffen sind
args1(10).Name = "SearchItem.SearchString"
args1(10).Value = "^[0-9]{2,}|[4-9]|^0|0$|"

wie lautet dafür der code ?
Karolus
********
Beiträge: 7532
Registriert: Mo, 02.01.2006 19:48

Re: FIlter programmieren

Beitrag von Karolus »

Hallo
es gibt keinen funktionierenden Suchausdruck für leere Zellen, aber ich hab etwas anders dafür gefunden - probiere mal den Code unten.

Code: Alles auswählen

sub suchen_ausblenden

dim ocontroller   as object

ocontroller   = ThisComponent.CurrentController
with createUnoService("com.sun.star.frame.DispatchHelper")

dim args2(0) as new com.sun.star.beans.PropertyValue
args2(0).Name = "ToPoint"
args2(0).Value = "C1:C2000"

	.executeDispatch(ocontroller, ".uno:GoToCell", "", 0, args2())

oController.select(oController.Selection.queryEmptyCells)
	.executeDispatch(oController, ".uno:HideRow", "", 0, Array())

	.executeDispatch(oController, ".uno:GoToCell", "", 0, args2())

dim args1(17) as new com.sun.star.beans.PropertyValue
args1(0).Name = "SearchItem.StyleFamily"
args1(0).Value = 2
args1(1).Name = "SearchItem.CellType"
args1(1).Value = 0
args1(2).Name = "SearchItem.RowDirection"
args1(2).Value = true
args1(3).Name = "SearchItem.AllTables"
args1(3).Value = false
args1(4).Name = "SearchItem.Backward"
args1(4).Value = false
args1(5).Name = "SearchItem.Pattern"
args1(5).Value = false
args1(6).Name = "SearchItem.Content"
args1(6).Value = false
args1(7).Name = "SearchItem.AsianOptions"
args1(7).Value = false
args1(8).Name = "SearchItem.AlgorithmType"
args1(8).Value = 1
args1(9).Name = "SearchItem.SearchFlags"
args1(9).Value = 71680
args1(10).Name = "SearchItem.SearchString"
args1(10).Value = "^[0-9]{2,}|[4-9]" 'geändert
args1(11).Name = "SearchItem.ReplaceString"
args1(11).Value = ""
args1(12).Name = "SearchItem.Locale"
args1(12).Value = 255
args1(13).Name = "SearchItem.ChangedChars"
args1(13).Value = 2
args1(14).Name = "SearchItem.DeletedChars"
args1(14).Value = 2
args1(15).Name = "SearchItem.InsertedChars"
args1(15).Value = 2
args1(16).Name = "SearchItem.TransliterateFlags"
args1(16).Value = 1280
args1(17).Name = "SearchItem.Command"
args1(17).Value = 1

	.executeDispatch(oController, ".uno:ExecuteSearch", "", 0, args1())
	.executeDispatch(oController, ".uno:HideRow", "", 0, Array())
end with
end sub
Gruß Karo
Zuletzt geändert von Karolus am Di, 22.12.2009 12:20, insgesamt 1-mal geändert.
LO7.4.7.2 debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
damuschong
**
Beiträge: 23
Registriert: Mo, 21.12.2009 13:04

Re: FIlter programmieren

Beitrag von damuschong »

Vielen dank ;)!!!! funktioniert super,
eine(hoffentlich) letzte frage hätt ich noch , wie bekomme ich zeilen mit negativen werten in der Spalte raus ?, danke
Antworten