❤️ 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. 🤗

Sortierlisteneintrag für ca 5000 Zeilen

CALC ist die Tabellenkalkulation, die Sie immer wollten.
artun
Beiträge: 6
Registriert: Sa 6. Aug 2016, 00:38

Sortierlisteneintrag für ca 5000 Zeilen

Beitrag von artun » Sa 6. Aug 2016, 15:17

Hallo,
ich habe eine Tabelle mit LO5x erstellt. Ich habe 13 Spalten (A bis M) und ca. 4200 Zeilen, jede Zeile ist eine eigenständige Datensatz. Ich muss die Zeilen auf- oder absteigend sortieren. Jede Zeile enthält nur Zahlen (Temperaturwerte: 1 bis 70). Gebe ich den Befehl zeilenweise Sortieren dann wird nur die erste Zeile (A1:M1) sortiert. Ich habe ein bisschen recherchiert und irgendwo gelesen, was man dafür zuerst einen Sortierlisteneintrag machen muss, was ich aber leider nicht machen konnte. Wie macht man das als Formel für mehrere Zeilen? Oder gibt es noch andere Lösungen? Vielen Dank!
Artun

mikele
* LO-Experte *
Beiträge: 1947
Registriert: Mo 1. Aug 2011, 20:51

Re: Sortierlisteneintrag für ca 5000 Zeilen

Beitrag von mikele » Sa 6. Aug 2016, 16:31

Hallo,
muss du jede Zeile für sich sortieren?
Gruß,
mikele

artun
Beiträge: 6
Registriert: Sa 6. Aug 2016, 00:38

Re: Sortierlisteneintrag für ca 5000 Zeilen

Beitrag von artun » Sa 6. Aug 2016, 16:38

hi,
ja, jede Zeile für sich selbst.

mikele
* LO-Experte *
Beiträge: 1947
Registriert: Mo 1. Aug 2011, 20:51

Re: Sortierlisteneintrag für ca 5000 Zeilen

Beitrag von mikele » Sa 6. Aug 2016, 19:00

Hallo,
dann wird es das sinnvollste, ein Makro zu schreiben.
Alternativ müsste jede Zeile einzeln gewählt und sortiert werden - das macht keinen Spaß.
Mal auf die Schnelle (mit Hilfe von Andrew Pitonyak, Listing 430) zusammengestrickt, sortiert dir folgendes Makro die ersten 5000 Zeilen auf Tabelle1 (zeilenweise) nach aufsteigenden Werten.

Code: Alles auswählen

Sub zeilen_sortieren
	Dim oSheet as object
	Dim oRange as object
	Dim oSortFields(0) as new com.sun.star.util.SortField
	Dim oSortDesc(1) as new com.sun.star.beans.PropertyValue
	oSheet = ThisComponent.Sheets(0)

	REM Sortiert wird über das erste Feld im Bereich.
	oSortFields(0).Field = 0
	oSortFields(0).SortAscending =true 'aufsteigende Werte
	
	REM Die zu nutzenden Sortierfelder.
	oSortDesc(0).Name = "SortFields"
	oSortDesc(0).Value = oSortFields()
	oSortDesc(1).Name = "IsSortColumns" 'Spalten werden sortiert
	oSortDesc(1).Value = True

	REM Der zu sortierende Bereich.

	for i= 0 to 5000
		oRange = oSheet.getCellRangeByPosition(0,i,12,i)
		REM Nun wird der Bereich sortiert!
		oRange.Sort(oSortDesc())
	next
End Sub
Dateianhänge
makro_sortieren.ods
(375.9 KiB) 81-mal heruntergeladen
Gruß,
mikele

Pit Zyclade
* LO-Experte *
Beiträge: 3060
Registriert: Mo 12. Nov 2012, 16:59

Re: Sortierlisteneintrag für ca 5000 Zeilen

Beitrag von Pit Zyclade » Sa 6. Aug 2016, 19:05

Darf ich noch mal nachfragen
1. was Du und
2. in welcher Richtung Du sortieren möchtest?

Denn das was Du mit Sortierlisten ansprichst bezieht sich nicht primär auf die Richtung, sondern auf die Art dr Sortierung.

Wenn Du also in Spalten über die 5000 Datensätze (in Zeilen) sortieren möchtest, mußt Du nur
den Datensatz = Zeile angeben nach selchem die Daten, deren Beziehung in der Spalte erhalten bleibt, sortieren möchtest:
Deine Tabelle markieren und dann nach
Daten->sortieren->Richtung von links nach rechts ankreuzen...
LO 24.8.7.2 (X86_64) / Windows 11 64bit
Problem gelöst? Dann bitte im Betreff der ersten Nachricht [gelöst] voranstellen.

artun
Beiträge: 6
Registriert: Sa 6. Aug 2016, 00:38

Re: Sortierlisteneintrag für ca 5000 Zeilen

Beitrag von artun » So 7. Aug 2016, 13:48

Hallo,
es hat zwar lange gedauert und bisschen nerven gekostet, am Ende hat es aber geklappt und zwar mit Makro; mit einfachen Sortierungsbefehl von links nach rechts wird immer nur die erste Zeile sortiert. Mit 68 habe ich wieder mal was schönes gelernt. (In einem Buch mit ca. 600 Seiten -Excxx Makros- ist so ein Makro nicht zu finden.)
Herzlichen vielen Dank an Mikele und Pit Zyclade!
Grüsse
Zuletzt geändert von artun am Di 16. Aug 2016, 19:31, insgesamt 1-mal geändert.

mikele
* LO-Experte *
Beiträge: 1947
Registriert: Mo 1. Aug 2011, 20:51

Re: Sortierlisteneintrag für ca 5000 Zeilen

Beitrag von mikele » Fr 12. Aug 2016, 15:20

Hallo,

nur so zum Spaß das Ganze mal in Python (läuft bei 5000 Zeilen erheblich schneller):

Code: Alles auswählen

def zeile_sortieren():
    oDoc = XSCRIPTCONTEXT.getDocument()
    oSheet = oDoc.Sheets.getByIndex(0)
    oCells = oSheet.getCellRangeByPosition(0,0,12,5000)
    sDaten=list(oCells.getDataArray())
    for n in range(len(sDaten)):
        sDaten[n]=tuple(sorted(list(sDaten[n])))
    oCells.setDataArray(tuple(sDaten))
Die Python-Profis kennen vielleicht noch eine optimalere Variante.
Gruß,
mikele

artun
Beiträge: 6
Registriert: Sa 6. Aug 2016, 00:38

Re: Sortierlisteneintrag für ca 5000 Zeilen

Beitrag von artun » Sa 13. Aug 2016, 11:51

Hallo,
wie kann ich denn diese "pythonartige Sätze" ganz konkret bei meinen Tabellen benutzen? Als Script oder als Makro oder....? wo und als was muss ich denn diese Zeilen speichern?
Ich habe/benutze xubuntu 16.04 und u.a. LO5x.
Grüße

mikele
* LO-Experte *
Beiträge: 1947
Registriert: Mo 1. Aug 2011, 20:51

Re: Sortierlisteneintrag für ca 5000 Zeilen

Beitrag von mikele » Sa 13. Aug 2016, 13:36

Hallo,
du speicherst den Code in einer .py-(Text)datei (z. B. sortieren.py). Diese Datei legst du in deinem home-Verzeichis (müsste das gleiche sein, wie bei mir unter Ubuntu)
/home/...deinName.../.config/libreoffice/4/user/Scripts/python
(ggf. musst du /Scripts/python noch anlegen).
Anschließend kannst du es als Makro ausführen: ->Extras->Makros->Ausführen und ist dort in der Bibliothek "Meine Makros" zu finden.
Falls das nicht klappt (und unter ->Extras->Makros->Makros verwalten kein Python zur Verfügung steht) muss eventuell der libreoffice-script-provider-python nachinstalliert werden.
Ich hoffe, du kommst mit diesem Gewurschtel zurecht ...
Gruß,
mikele

artun
Beiträge: 6
Registriert: Sa 6. Aug 2016, 00:38

Re: Sortierlisteneintrag für ca 5000 Zeilen

Beitrag von artun » Sa 13. Aug 2016, 14:43

Hallo,
danke für die schnelle Antwort. Das Ganze aber kann ich erst am Montag versuchen zu testen. Ich werd' mich dann mit Sicherheit wieder melden.
Grüße


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