🍀 Das LibreOffice Forum braucht HEUTE Ihre Hilfe! 🍀
❤️ Spenden Sie jetzt und sichern Sie die Zukunft unseres LibreOffice-Forums ❤️
Ihre Spende hilft, die Community offen, werbefrei (bei Registrierung) und lebendig zu halten. Vielen lieben Dank!

🙏 DANKE >> << DANKE 🙏

>> Das LibreOffice-Forum lebt von Ihnen – und von vielen Experten, die freiwillig und kostenlos ihr Wissen teilen.<<
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: 2047
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: 2047
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) 101-mal heruntergeladen
Gruß,
mikele

Pit Zyclade
* LO-Experte *
Beiträge: 3191
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 25.8.6.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: 2047
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: 2047
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:
Bitte beteiligen Sie sich mit 7 Euro pro Monat und helfen uns bei unserem Budget für das laufende.
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