BITTE helfen Sie uns HEUTE mit einer SPENDE
Helfen Sie das LibreOffice Forum zu erhalten!

❤️ DANKE >><< DANKE ❤️

> KEINE WERBUNG FÜR REGISTRIERTE BENUTZER!<
Ihre Spende wird für die Deckung der laufenden Kosten sowie den Erhalt und Ausbau 🌱 des LibreOffice Forums verwendet.
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗

spezialfilter per makro

CALC ist die Tabellenkalkulation, die Sie immer wollten.
johannn
Beiträge: 10
Registriert: Mi 19. Jan 2022, 16:00

spezialfilter per makro

Beitrag von johannn » Mi 19. Jan 2022, 16:40

hallo,
ich habe folgendes problem:
aus einer liste sollen alle zeilen die in spalte "X" einen wert "y" haben kopiert, gelöscht (zeilen entfernt) und in eine andere tabelle eingefügt werden.

um es mal etwas bildlich darzustellen, muss man sich ein kartenspiel mit 4 spielern vorstellen. am ende des spiels liegen alle karten gemischt auf dem tisch. nun möchte ich nach meinen sortierkriterien jedem spieler wieder neue karten austeilen.

jetzt wäre es schön, ich drücke einen makroknopf "sortierkriterium a" und dann wird automatisch alles was "a" entspricht aussortiert und in das entsprechende tabellenblatt "a" einsortiert.

händisch ist das alles kein problem, brauche ich nichteinmal einen spezialfilter, aber mit makro bekomme ich das nicht hin.
dabei muss ich erwähnen, dass ich natürlich ein makro auch nur aufzeichnen kann (recorder). dann hab ich im makro ein "rem" vor dem spezialfilterbefehl, aber selbst wenn ich das entferne passiert nichts.

ich hoffe meine erklärungen sind verständlich und jemand für den das hier ein "witz" ist kann mir helfen.

gruss,

craig
Beiträge: 1137
Registriert: Do 21. Apr 2016, 11:42

Re: spezialfilter per makro

Beitrag von craig » Mi 19. Jan 2022, 17:36

Hallo johann,
  1. Wenn Du Fragen zu Makros hast, dann stelle diese bitte in Zukunft im Unterforum LibreOffice Programmierung
  2. Statt einer einfachen Beschreibung Deines Wunsches , ist es in jedem Fall besser
    eine Beispieldatei hochzuladen, in der Ist- und Sollzustand von Dir beschrieben werden, etc.
    1. Weil die Helfer dann eine konkrete Vorlage haben und diese
      nicht erst nach Deinen Angabe nachgebaut werden muss.
    2. Es erspart Dir und uns zusätzliche Nachfragen, ob es denn so paßt, usw.
Und hier die erste Frage:
Wenn die Daten in die zweite Tabelle übernommen wurden, sollen dann die alten
Datensätze gelöscht werden oder sollen die neuen Datensätze angehängt werden?

Und hier die zweite Frage:
Wenn die Datensätze angehängt werden sollen, sollen dann
Unterscheidungsmerkmale für NEU und ALT mit angehängt werden ?

Und hier die dritte Frage:
Was ist mit den Formatierungen un d ggf. Formeln?
Gruß

Craig

Nie die Sicherungskopie vergessen!

════════════════════════════════════════════════
WIN 10 Pro 64-Bit • LO 7.4.5.1 (x64) • AOO 4.1.8

johannn
Beiträge: 10
Registriert: Mi 19. Jan 2022, 16:00

Re: spezialfilter per makro

Beitrag von johannn » Mi 19. Jan 2022, 22:07

hallo Craig,

danke für deine antwort und hinweise.
ich habe eine liste mit übungsliedern. jedes stück wird mit einer punktzahl zwischen 0 und 10000, jenachdem wie gut ich spiele bewertet.
ich verteile die stücke nach 3 kategorien: bis 7500 punkte, zwischen 7500 und 9000 und über 9000 in die entsprechenden tabellenblätter.
aus meinem haupttabellenblatt "gespielt" rufe ich per makrobutton abwechselnd ein zufälliges stück aus einer der tabellen auf, woraufhin dieses im urspung gelöscht wird und in der obersten zeile meiner spielliste eingefügt wird. nachdem ich max. 3 mal gespielt habe hat dieses stück nun einen neuen punktestand.
irgendwann ist zb. die tabelle "bis7500" leer.
jetzt möchte ich per makro alle stücke die immer noch unter 7500 geblieben sind wieder in das tabellenblatt "bis75%" umschaufeln um sie von dort wieder aufrufen zu können.
ich hänge die datei an und hoffe es wird klarer....
Dateianhänge
Masterliderliste F Dez21.ods
(201.4 KiB) 78-mal heruntergeladen

craig
Beiträge: 1137
Registriert: Do 21. Apr 2016, 11:42

Re: spezialfilter per makro

Beitrag von craig » Do 20. Jan 2022, 10:56

Hallo johann,

vielen Dank, dass Du die Datei zur Verfügung gestellt hast.

Sorry, leider blicke ich hier nicht durch. :oops:

Vielleicht gibt es jemand anderes der Dir hierbei weiterhelfen kann.
Gruß

Craig

Nie die Sicherungskopie vergessen!

════════════════════════════════════════════════
WIN 10 Pro 64-Bit • LO 7.4.5.1 (x64) • AOO 4.1.8

johannn
Beiträge: 10
Registriert: Mi 19. Jan 2022, 16:00

Re: spezialfilter per makro

Beitrag von johannn » Do 20. Jan 2022, 14:50

hallo Craig,

ich habe jetzt mal eine beispieltabelle gemacht die nichts weiter enthält als das worum es mir geht und habe es nochmals beschrieben so gut ich kann. ich bin überzeut davon dass meine originaltabbelle die ich, dass muss ich zugeben nach besten wissen und gewissen zusammengemurkst habe (aus mangel an kentniss), so undurchsichtig ist dass da niemand durchblickt :)
aber jetzt glaube ich müsste es gehen.....
gruß,
johann
Dateianhänge
beispiel.ods
(15.42 KiB) 71-mal heruntergeladen

mikele
Beiträge: 1642
Registriert: Mo 1. Aug 2011, 20:51

Re: spezialfilter per makro

Beitrag von mikele » Do 20. Jan 2022, 14:57

Hallo,
es ist verwirrend ...
Sollen die Zellen inkl. Formeln und Formaten verschoben werden?
Nur Werte? Werte+Formeln?
Kann davon ausgegangen werden, dass die Tabelle "ungesp bis 75%" wirklich leer ist, d. h. ab Zeile 3 eingefügt werden kann?
Gruß,
mikele

johannn
Beiträge: 10
Registriert: Mi 19. Jan 2022, 16:00

Re: spezialfilter per makro

Beitrag von johannn » Do 20. Jan 2022, 19:50

hallo Mikele,

wenn du dir meine zweite datei "beispiel.ods" anschaust (aber auch in der originaldatei) ist es so:

drückst du auf das makro "bis75%" dann springt der cursor in die tab "bis75%" und
1) markiert die erste zeile
2) kopiert sie
3)löscht die zeile
4) springt wieder in die hauptabelle in die xte zeile (im beispiel zeile 4)
5) fügt eine zeile oberhalb ein
6) kopiert in diese eingefügte zeile alles (werte, formate, formeln aufs i-tüpfelchen...) was es in der ursprungstabelle kopiert hat

das funktioniert ja auch alles.
nur wenn jedesmal eine zeile aus "bis75%" herausgenommen (gelöscht) und in die haupttabelle geschaufelt wird, dann ist irgendwann das tabelleblatt "bis75%" leer und die hauptabelle wird immer länger. in die hauptabelle kommen ja auch die zeilen aus den blättern "75-90" und "90+".

jetzt kommt das was ich brauche:
sobald eines der 3 tabellenblätter "bis75%" "75-90" und "90+" leer ist dann soll ein makro aus der hauptabelle alle zeilen in die jeweilig gehörende leere tabelle zurückschaufeln (wieder komplett mit haut und haar).
also, "75-90" ist leer dann soll aus der haupttablelle
1) alle zeilen die dem kriterium "aktueller punktestand" spalte F = >=7500 und <9000 entsprechen finden
2)in die tabelle "75-90" einfügen
3) in der haupttabelle entfernen

ich hoffe diese ausführungen bringen etwas mehr klarheit ;)

Wanderer
Beiträge: 895
Registriert: Di 11. Feb 2014, 20:03
Wohnort: Berlin

Re: spezialfilter per makro

Beitrag von Wanderer » Fr 21. Jan 2022, 15:23

Hallo,

das klingt wie der Nachbau eines Systems für Lernkarteikarten mit Calc-Tabellen.

Meiner Ansicht nach kompletter Unsinn auf einem Computer, da der Dir die 250 gesuchten Karteikarten blitzschnell heraussuchen kann. Also: Eine Datentabelle und die gesuchte Kategorie als Spalte, nicht als eigenes Blatt. Dann kannst Du mit Autofilter, Standardfilter und auch Dpezialfilten arbeiten ohne irgendwas zu kopieren. Und wenn es zuviele Daten werden kann man problemlos auf eine Datenbank wechseln...

mfg, Jörn
LO 6.0.7 (32Bit) Win8.1 Pro 32 Bit/ LO 6.3.2 Win10 64Bit / LO 6.0.7 Win7 Pro 64 Bit

mikele
Beiträge: 1642
Registriert: Mo 1. Aug 2011, 20:51

Re: spezialfilter per makro

Beitrag von mikele » Sa 22. Jan 2022, 12:16

Hallo,
Wanderer hat vollkommen Recht, dass die Datei unübersichtlich und damit auch unpraktikabel ist. Natürlich ist sie für dich vollkommen logisch und sinnvoll.
Trotzdem wäre es die Chance, den Aufbau zu überdenken und dadurch insgesamt (auch für die und die Pflege der Daten) zu vereinfachen.
Zum Gesamtverständnis:
1. Du hast eine Liste mit Titeln (Name und Verzeichnis in Spalte R und S). Daraus wird in Spalte B ein Hyperlink generiert.
2. Die Spalten E-H beschreiben vermutlich den alten/neuen Punktestand, Spielhäufigkeit und Entwicklung.
3. Irgendwo wird die Kategorie festgelegt (das Kriterium habe ich noch nicht gefunden).
Soweit die Ausgangsdatenlage.
Nun möchtest du zufällig einen Titel einer gewissen Kategorie auswählen und üben. Dazu werden irgendwo Zeiten und (neue?) Punkte eingetragen, wodurch sich ggf. die Kategorie ändert.
Das wäre alles mit einer einzigen Tabelle sinnvoll lösbar.
Gibst du uns ein paar weitere Infos zum Verständnis, könnte man es anschieben.
Du darfst natürlich auch bei deiner Arbeitsweise bleiben. Für das gesuchte Makro bräuchte ich halt die Info, welche Spalte die Kategorie definiert. Ich vermute mal Spalte E (in der Masterliderliste F Dez21.ods)?
Gruß,
mikele

mikele
Beiträge: 1642
Registriert: Mo 1. Aug 2011, 20:51

Re: spezialfilter per makro

Beitrag von mikele » So 23. Jan 2022, 12:22

Hallo,
kannst/möchtest du ein weitere Infos zu den Spalten und Berechnungen (Tabellen berechnung + auswertung) geben? Warum haben manche Titel einen negativen Punktwert (es sollen doch Punkte von 0 bis 10000 sein)?

Code: Alles auswählen

Sub filter_kopieren
	
	oDoc=ThisComponent
	oTab=oDoc.Sheets.getByName("gespielt ")
	'letzte benutzte Zeile in Spalte G finden
	oc=oTab.Columns(6).queryEmptyCells.RangeAddresses
	n=oc(uBound(oc)).StartRow-1
	'Zugriff Datenbereich
	quelle=oTab.getcellRangeByPosition(0,3,18,n)
	'Ziel festlegen
	ziel=oDoc.Sheets.getByName("ungesp bis 75%").getCellRangeByName("A3")
	'Filter erstellen
	oFilter = quelle.createFilterDescriptor(True)
	oFilter.ContainsHeader=false
	oFilter.CopyOutputData=true	'gefilterte Zellen sollen ins Ziel kopiert werden
	oFilter.OutputPosition=ziel.celladdress
	oFilter.SkipDuplicates=true
	'Filterbedingung setzen
	aFilterFields = DimArray(0)
		aFilterFields(0) = new com.sun.star.sheet.TableFilterField
		aFilterFields(0).Connection = com.sun.star.sheet.FilterConnection.AND
		aFilterFields(0).field=6
		aFilterFields(0).IsNumeric = true
		aFilterFields(0).NumericValue=7500
		aFilterFields(0).Operator = com.sun.star.sheet.FilterOperator.LESS_EQUAL
	oFilter.setFilterFields(aFilterFields)
	'Filterung durchführen
	quelle.filter(oFilter)	

End Sub
Gruß,
mikele

An alle, die das LibreOffice-Forum nutzen:


Bitte beteiligen Sie sich mit 7 Euro pro Monat und helfen uns bei unserem Budget für das Jahr 2024.
Einfach per Kreditkarte oder PayPal.
Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet.

❤️ Vielen lieben Dank für Ihre Unterstützung ❤️

Antworten