❤️ Helfen Sie noch heute, unser LibreOffice Forum zu erhalten! ❤️
Unterstützen Sie das LibreOffice-Forum und helfen Sie uns, unser Ziel für 2025 zu erreichen!

🍀 Jeder Beitrag zählt – vielen Dank für Ihre Unterstützung!🍀
Mit Ihrer Spende sichern Sie den Fortbestand, den Ausbau und die laufenden Kosten dieses Forums. 🌱


❤️ DANKE >> << DANKE ❤️

>> Dank Ihrer Unterstützung -> Keine Werbung für alle registrierten LibreOffice-Forum User! <<
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗

Zeilen in andere Tabelle übergeben

CALC ist die Tabellenkalkulation, die Sie immer wollten.
Antworten
Deus74
Beiträge: 2
Registriert: Fr 11. Nov 2016, 16:58

Zeilen in andere Tabelle übergeben

Beitrag von Deus74 » Fr 11. Nov 2016, 17:18

Hallo,

ich bin ein absoluter Laie was Calc betrifft. Jetzt muss ich mich aber dran begeben und habe ein kleines Problem. Ich möchte gern in einer "Eingabe"-Tabelle Werte eingeben die in andere Tabellen übergeben werden sollen. Das heisst wenn eine bestimmte Bedingung in der Eingabetabelle eintritt soll es in die entsprechende Tabelle eingefügt werden. Speziell geht es um die Bedingung Klasse. Wenn die Klasse XS erfüllt ist dann soll die ganze Zeile in die Tabelle Gruppe XS kopiert werden, wenn die Klasse M ist dann in Gruppe M. Es gibt 6 verschiedene Klassen und damit auch 6 verschiedene weitere Tabellenblätter.

Hier ein Beispiel der Eingabe:
Bild

Hier ein Beispiel des Tabellenblattes XS (die anderen sehen genauso aus)
Bild

craig
* LO-Experte *
Beiträge: 1137
Registriert: Do 21. Apr 2016, 11:42

Re: Zeilen in andere Tabelle übergeben

Beitrag von craig » Sa 12. Nov 2016, 00:01

Hallo,

im Anhang übersende ich Dir eine Datei, die die Daten aus dem Eingabeblatt
auf die anderen Blätter per Makro nach dem Kriterium "Klasse" verteilt.
Makro per Array Daten übertragen_02.ods
Daten filtern, übertragen und löschen
(13.16 KiB) 216-mal heruntergeladen
Für einen Laien ist dies natürlich eine schwer nachvollziehbare Sache.
Eine Formel für diese Aktion ist mir nicht eingefallen.

Gruß

Craig
Gruß

Craig

Nie die Sicherungskopie vergessen!

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

paljass
* LO-Experte *
Beiträge: 695
Registriert: Fr 18. Mär 2011, 15:34

Re: Zeilen in andere Tabelle übergeben

Beitrag von paljass » Sa 12. Nov 2016, 07:21

Hi,
ich hab mir mal die Datei von craig geschnappt und hab für die Gruppe XS eine Formellösung erstellt.
Dazu wird auf dem Eingabeblatt eine Hilfsspalte benötigt (Spalte A); diese kann später ausgeblendet werden.

Alle Formeln sind so gestrickt, dass sie nach unten kopiert werden können.

Viel Spass und schönes Wochenende
paljass
Dateianhänge
Daten übertragen.ods
(26.6 KiB) 223-mal heruntergeladen

F3K Total
* LO-Experte *
Beiträge: 2501
Registriert: So 10. Apr 2011, 10:10

Re: Zeilen in andere Tabelle übergeben

Beitrag von F3K Total » Sa 12. Nov 2016, 09:25

Moin,
und ein weiterer Ansatz:
Sechs Datenbankbereiche (Daten/Bereich festlegen)
DBR.png
DBR.png (6.87 KiB) 3640 mal betrachtet
beherbergen sechs Standardfilter (Daten/weitere Filter/Standardfilter), bei denen unter Einstellungen das jeweilige Tabellenblatt als Ziel für das Filterergebnis eingetragen ist.
F.png
F.png (11.44 KiB) 3640 mal betrachtet
Da man von Hand nun sechs Datenbankbereiche nacheinander selektieren müsste um dann die Filterung durchzuführen, habe ich ein sehr kurzes Makro geschrieben, dass die sechs Bereiche in einem Rutsch aktualisiert, zum Ausführen den Button Daten filtern anklicken

Code: Alles auswählen

Sub refresh_Filter
    oDatabaseRanges = Thiscomponent.DatabaseRanges
    for i = 0 to oDatabaseRanges.count - 1
        oDatabaseRange = oDatabaseRanges(i)
        oDatabaseRange.refresh
    next i
    thisComponent.calculateAll
end sub
Anbei die Datei.

Damit das Makro laufen darf, stellt man unter Extras/Optionen/LibreOffice/Sicherheit/Makrosicherheit mindestens die Stufe Mittel ein, dann wird man beim Öffnen von Dokumenten gefragt, ob Makros ausgeführt werden dürfen.

Gruß R
Dateianhänge
Daten_filtern.ods
(14.32 KiB) 154-mal heruntergeladen
Windows 11: AOO, LO Linux Mint: AOO, LO

Deus74
Beiträge: 2
Registriert: Fr 11. Nov 2016, 16:58

Re: Zeilen in andere Tabelle übergeben

Beitrag von Deus74 » Sa 12. Nov 2016, 11:02

Super, genau das was ich gebraucht habe.... Riesendank.

F3K Total
* LO-Experte *
Beiträge: 2501
Registriert: So 10. Apr 2011, 10:10

Re: Zeilen in andere Tabelle übergeben

Beitrag von F3K Total » Sa 12. Nov 2016, 12:26

Hallo Deus,
mich würde schon interessieren, welche der drei Lösungen du nun nimmst.
Gruß R
Windows 11: AOO, LO Linux Mint: AOO, LO

craig
* LO-Experte *
Beiträge: 1137
Registriert: Do 21. Apr 2016, 11:42

Re: Zeilen in andere Tabelle übergeben

Beitrag von craig » Sa 12. Nov 2016, 20:34

Hallo,

ich bin fasziniert was man alles so kreieren kann :D

@paljass
Sehr interessant! Vielen Dank :!:

@R
Naja, meine Methode war eine gute „Array Übung“ für mich.
Deine Vorgehensweise hat meinen langen Quellcode auf 6 Zeilen eingedampft. Super :!:
Ich habe dazu noch eine Frage.
Mittels MRI habe ich keine direkte Append-Methode gefunden, die es ermöglicht
Daten in den Zieltabellen einfach anzuhängen.
Geht das Anhängen von Daten dann nur über die Ermittlung der nächst leeren
Zeile oder habe ich eine Methode übersehen?
z.B.

Code: Alles auswählen

oDatabaseRange = oDatabaseRanges(Index)
oDatabaseRange.append
In jedem Fall, sind Eure Methoden sehr lehrreich für mich.

Gruß

Craig
Gruß

Craig

Nie die Sicherungskopie vergessen!

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

F3K Total
* LO-Experte *
Beiträge: 2501
Registriert: So 10. Apr 2011, 10:10

Re: Zeilen in andere Tabelle übergeben

Beitrag von F3K Total » So 13. Nov 2016, 08:59

Guten Morgen craig,
wie ich schon geschrieben habe,
Sechs Datenbankbereiche (Daten/Bereich festlegen) beherbergen sechs Standardfilter (Daten/weitere Filter/Standardfilter)
D.h. dass die Filterergebnisse bei jedem Aktualisieren komplett neu berechnet werden. Alle passenden Zeilen des ersten Tabellenblattes werden jeweils auf die sechs Einzelblätter neu verteilt, das Ergebnis ist dann aktuell.
Ich verstehe nicht, was du mit Daten anhängen meinst.
Gruß R
Windows 11: AOO, LO Linux Mint: AOO, LO

craig
* LO-Experte *
Beiträge: 1137
Registriert: Do 21. Apr 2016, 11:42

Re: Zeilen in andere Tabelle übergeben

Beitrag von craig » Mi 16. Nov 2016, 18:42

Hallo R,
R hat geschrieben:Ich verstehe nicht, was du mit Daten anhängen meinst.
  • Mein Gedanke war, dass einmalig ein Datenfilterung per Makro ausgeführt wurde.
  • Im Anschluss werden Daten in irgendeiner Form in den Zieltabellen (z.B. Gruppe M“) verändert/ berechnet.
  • Später kommen neue Mitglieder hinzu, die in die Eingabe-Tabelle geschrieben werden.
  • Eine neuerliche Datenfilterung mit dem jetzigen Makro würde aber alle Datensätze in den Zieltabellen überschreiben.
  • Die erfolgten Änderungen/Berechnungen in den Zieltabellen gehen dabei verloren.
  • In einem solchen Fall wäre es sinnvoll, nur die neuen Datensätze in die Zieltabellen zu übertragen.
Das meine ich mit anhängen der Datensätze.

Weitere Überlegungen:
Nur woran soll Basic erkennen, dass es sich um neue Datensätze handelt?
Es müsste in der Eingabe-Tabelle per Makro ein Attribut z.B. in Form eines
Datumstempels für jeden bereits gefilterten Datensatz gesetzt werden.
Dann wäre eine neue Filterung möglich.
Abfrage des Attributs:
  • Wenn Attribut vorhanden, dann keine Datenübertragung.
  • Kein Attribut vorhanden, dann muss Datenübertragung erfolgen.
  • Die neuen Datensätze müssen dann unter die vorhandenen Datensätze in den Zieltabellen gesetzt(angehängt) werden.
Ich weiß wie ich einen Datumstempel erzeugen kann, auch die
Abfrage und Übertragung der Daten ist nicht das Problem.
Wie Du aber an meinem Code gesehen hast, ist mein Vorgehen
etwas umfangreicher gewesen. :roll:

Jetzt dachte ich, mit Deiner "6-zeiligen Makro Filter-Methode" einen eben solch
kurzen Code zu erzeugen, der wie oben beschrieben neue Daten inklusive
"Attribut-Vergleich" an die bestehende Daten in den Zieltabellen anhängt.

Nur habe ich weder bei "ThisComponent", noch bei "DataBaseRanges" eine Methode
gefunden, die genannten Datenvergleich und etwaige Schreibaktion durchführen könnte.

So komme ich hier zu folgendem Schluß bei neuen Datensätzen:
  1. Alle Datensätze aus dem Eingabeblatt in ein Array schreiben
  2. Arrayfelder auf Vorhandensein eines Datenstempels vergleichen
  3. Wenn kein Stempel vorhanden, dann Datensätze sammeln
  4. Sammlung auf die einzelnen Ziletabllen verteilen.
Gruß

Craig
Gruß

Craig

Nie die Sicherungskopie vergessen!

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


An alle, die das LibreOffice-Forum gern nutzen und unterstützen wollen:


Bitte helfen Sie uns mit 7 Euro pro Monat.
Durch Ihren Beitrag tragen Sie dazu bei, unsere laufenden Kosten für die kommenden Monate zu decken.
Unkompliziert per Kreditkarte oder PayPal.
Als ein kleines Dankeschön werden Sie im LO-Forum als SUPPORTER gekennzeichnet.



Antworten