Zeilen löschen per Makro in Calc

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

spacko
Beiträge: 2
Registriert: Mi, 06.10.2010 10:14

Zeilen löschen per Makro in Calc

Beitrag von spacko »

Hallo,

ich habe schon die Suchfunktion bemüht, aber irgendwie krieg ich's trotzdem nicht hin:

Ich habe hier eine Riesentabelle mit ca. 30000 Zeilen. Ich muss diese Tabelle verkleinern, und zwar so, dass bis Zeile 10000 nur jede zehnte und ab Zeile 10000 bis 30000 nur jede hundertste Zeile übrigbleibt. Kann mir da jemand helfen?

Danke!
clag
********
Beiträge: 3570
Registriert: Di, 27.01.2009 15:30

Re: Zeilen löschen per Makro in Calc

Beitrag von clag »

Hallo spacko,


habe mal versucht deinen Wunsch umzusetzen das ist dabei heraus gekommen

Code: Alles auswählen

Sub delete_some_rows
oSheet = thisComponent.sheets(0) 
oDoc = thisComponent
mysheet=odoc.currentcontroller.activesheet
orows=mysheet.getrows
oCellCursor = mySheet.createCursor
oCellCursor.GotoEndOfUsedArea(False)
xRow = oCellCursor.getRangeAddress().endRow
'print xRow
Dim begindel as integer
Dim ix as integer
Dim maxcount as integer
begindel = 0
for ix = 0 to 999 
begindel= begindel+1
orows.removebyindex(begindel,9)
next
maxcount = xrow - 10000
maxcount = maxcount /100
for ix = 0 to maxcount
begindel= begindel+1
orows.removebyindex(begindel,99)
next
MsgBox " habe fertig ", 48 
End Sub
du solltest das Makro aber erst an einer Kopie ! der großen original Datei auf korrekte Ausführung testen.
Es wird die aktuelle Tabelle bearbeitet.

hier eine Testdatei
Zeilen_löschen.ods
(44.19 KiB) 101-mal heruntergeladen
Zuletzt geändert von clag am Mi, 06.10.2010 11:57, insgesamt 1-mal geändert.
LG
clag

nutzt: WinXP SP3 / AOO 4.1.10 / Firefox
spacko
Beiträge: 2
Registriert: Mi, 06.10.2010 10:14

Re: Zeilen löschen per Makro in Calc

Beitrag von spacko »

Hi clag,

Ich bin beglückt! Vielen Dank, du hast mir sehr geholfen!
Karolus
********
Beiträge: 7532
Registriert: Mo, 02.01.2006 19:48

Re: Zeilen löschen per Makro in Calc

Beitrag von Karolus »

Hallo
Schade,das mir der Thread letzte Woche entgangen ist - hier nochmal eine Lösung mit 8 übersichtlichen Zeilen.

Code: Alles auswählen

Sub jedezehnte_jedeHunderste

with thiscomponent.sheets(0).getrows

	for i = 1 to 1000 'bis Zeile 10001
		.removebyindex(i,9) '9 löschen - 
	next ' - eine übrig lassen
	
	for i = 1001 to 1201 'ab Zeile 10002 bis 30001
		.removebyindex(i, 99) '99 löschen -
	next  '- eine übrig lassen 
		
end with
End Sub
Gruß Karo
LO7.4.7.2 debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
Antworten