Tabellenblätter alphabetisch sortieren?

Das Tabellenkalkulationsprogramm

Moderator: Moderatoren

RS
*******
Beiträge: 1088
Registriert: Fr, 14.01.2005 10:27

Tabellenblätter alphabetisch sortieren?

Beitrag von RS »

Hallo,

ich habe soeben eine Calc-Datei mit insgesamt 31 willkürlich nacheinander eingefügten und benannten Tabellenblättern angelegt. Diese müsste ich nun alphabetisch hintereinander anzeigen lassen.

Ist eine alphabetische Sortierung möglich? Wenn ja - wie?

Danke,

Gruß,

Rebecca
icke
Beiträge: 2
Registriert: Fr, 20.01.2006 12:39

Re: Tabellenblätter alphabetisch sortieren?

Beitrag von icke »

RS hat geschrieben: Ist eine alphabetische Sortierung möglich? Wenn ja - wie?
Hallo,

habe das gleiche Problem. Nimm doch den Dialog kopieren/verschieben - ist aber recht umständlich, da Du wohl nur das Blatt ans Ende stellen kannst. ;-(

Kann der Navigator nicht eine Sortierfunktion von den Entwicklern spendiert bekommen?

Grüße
MS Office ist out! :-)
RS
*******
Beiträge: 1088
Registriert: Fr, 14.01.2005 10:27

Beitrag von RS »

Hi,

hatte die Anfrage auch noch auf der User-Mailingliste gepostet, dabei kam ein Makro raus, den ich allerdings nie ausprobiert habe, da ich das manuelle Verschieben in meinem Fall einfacher und ausreichend fand.

Falls Du das Makro - ohne Gewähr - haben möchtest, kann ich es Dir schicken, allerdings erst nächste Woche, da ich jetzt ins Wochenende gehe.

Gruß,

Rebecca
Stephan
********
Beiträge: 12368
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Beitrag von Stephan »

Ich habe schnell mal zwei neue Makros zum Sortieren der Tabellenblätter geschrieben, diese einfach in eine Makrobibliothek von OOo kopieren und mit einer Schaltflche verknüpfen:

Code: Alles auswählen

Sub Sortieren_steigend()
dok = StarDesktop.CurrentComponent
anz = dok.Sheets().Count
dim a(anz-1)
For i = 0 to anz-1
	a(i) = dok.Sheets(i).Name
Next
For i = 0 To anz-2
	For j = i+1 to anz-1
		if LCase(a(i)) < LCase(a(j)) Then Goto z
		temp = a(i)
		a(i) = a(j)
		a(j) = temp
z:	Next j
Next i
For i = 0 to anz-1 
	dok.Sheets.moveByName(a(i),i)
Next i
End Sub

Code: Alles auswählen

Sub Sortieren_fallend()
dok = StarDesktop.CurrentComponent
anz = dok.Sheets().Count
dim a(anz-1)
For i = 0 to anz-1
	a(i) = dok.Sheets(i).Name
Next
For i = 0 To anz-2
	For j = i+1 to anz-1
		if LCase(a(i)) > LCase(a(j)) Then Goto z
		temp = a(i)
		a(i) = a(j)
		a(j) = temp
z:	Next j
Next i
For i = 0 to anz-1 
	dok.Sheets.moveByName(a(i),i)
Next i
End Sub

Gruß
Stephan
icke
Beiträge: 2
Registriert: Fr, 20.01.2006 12:39

Beitrag von icke »

Vielen Dank an Euch beide!

Die Makros funktionieren hervorragend! :D
MS Office ist out! :-)
Toxitom
********
Beiträge: 3769
Registriert: Di, 12.08.2003 18:07
Wohnort: Wiesbaden
Kontaktdaten:

Beitrag von Toxitom »

Hey Stephan,

bitte, bitte nicht.... :wink:

Code: Alles auswählen

if LCase(a(i)) < LCase(a(j)) Then Goto z 
   ....
z:[/quote]
Wir wollen doch auch einen "modernen" und "guten" Programmierstii pflegen :wink:

"GoTo" ist "deprecated" und sollte nicht mehr angewendet werden - auch wenn es natürlich funktioniert. Ausnahme: "On error goto marke"

Bitte einfach ohne "goto" schreiben - der Bubble-Sort Allgoythmus funktioniert genauso. Einfach die Bedingung "rumdrehen":

Code: Alles auswählen

For j = i+1 to anz-1
      if not (LCase(a(i)) < LCase(a(j))) Then 
        temp = a(i)
        a(i) = a(j)
        a(j) = temp
       end if
   Next j 
Oder - noch einfacher - das "Kleinerzeichen" rumdrehen :-)

Gruss
Thomas
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
Stephan
********
Beiträge: 12368
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Beitrag von Stephan »

Hallo Thomas,
bitte, bitte nicht....
...
Wir wollen doch auch einen "modernen" und "guten" Programmierstii pflegen


hast ja recht :wink:

... bereits als ich vor 20 Jahren Basic gelernt habe war nicht schön, aber manchmal kommt das ebend immer wieder durch dieses GoTo hier und GoTo da wenn ich nicht aufpasse.


Gruß
Stephan
Antworten