Seite 1 von 1

Zeilen löschen per Makro in Calc

Verfasst: Mi, 06.10.2010 10:24
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!

Re: Zeilen löschen per Makro in Calc

Verfasst: Mi, 06.10.2010 11:49
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

Re: Zeilen löschen per Makro in Calc

Verfasst: Mi, 06.10.2010 11:56
von spacko
Hi clag,

Ich bin beglückt! Vielen Dank, du hast mir sehr geholfen!

Re: Zeilen löschen per Makro in Calc

Verfasst: Do, 14.10.2010 22:36
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