Sub Set_20000_rows
dim i as long
osheet = thiscomponent.sheets.getbyname("Tabelle1")
oSrange = osheet.getcellrangebyname("O5:Q5")
aSdata = oSrange.DataArray
arow = aSdata(0)
aTRange = osheet.getcellrangebyname("O6:Q100000")
aTdata = aTRange.dataArray
for i = 0 to ubound(aTdata) step 5
aTdata(i) = arow
next i
aTRange.setdataArray(aTdata)
End Sub
Sub Set_20000_rows
dim i as long
osheet = thiscomponent.sheets.getbyname("Tabelle1")
oSrange = osheet.getcellrangebyname("O5:Q5")
aSdata = oSrange.DataArray '---> Datenarray aus den Zellen O5 bis Q5 auslesen
arow = aSdata(0)' arow ist das Datenarray der 0-ten und einzigsten Zeile und beinhaltet drei Werte (O5,P5,Q5)
aTRange = osheet.getcellrangebyname("O6:Q100000") '---> Zielzellenbereich wählen
aTdata = aTRange.dataArray '--->Datenarray Zielzellen auslesen (ist noch leer)
for i = 0 to ubound(aTdata) step 5 'von 0 bis Anzahl Zeilen des Datenarray der Zielzellen, Schrittweite 5
aTdata(i) = arow' ---> hier passiert es: in i-ter Zeile des Zielzellenarrays die Quellzeilenwerte(arow) setzen
next i
aTRange.setdataArray(aTdata)'---> Daten in Zellen einsetzen
End Sub
Sub Main
doc = thisComponent
osheet = doc.Sheets.getByIndex(0)
QuelleRange= osheet.getCellRangeByName("O5:Q5")
QuellAddress = QuelleRange.getRangeAddress
targetAddress = oSheet.getCellbyposition(14,5).getCellAddress
for i = 10 to 100000 step 5
targetAddress.Row = i
osheet.copyRange(targetAddress,QuellAddress)
next i
End Sub
! In einer Schleife die oft durchlaufen wird, sollte man so wenig tun wie irgendwie möglich !
Edit: Das dauert immer noch gut 3 Minuten - welche Formeln stehen in O5:Q5 ?
Karolus
Zuletzt geändert von Karolus am Di, 26.03.2013 10:50, insgesamt 1-mal geändert.
LO7.4.7.2debian 12(bookworm) auf Raspberry5 8GB (ARM64) LO25.2.3.2 flatpakdebian 12(bookworm) auf Raspberry5 8GB (ARM64)
Sub S_insert_formulas_in_20000_rows
dim i as long
dim n as long
osheet = thiscomponent.sheets.getbyname("Tabelle1")
aTRange = osheet.getcellrangebyname("O6:Q100000")
aTformula = aTRange.formulaArray
for i = 0 to ubound(aTformula) step 5
n = i + 5
arow = aTformula(i)
arow(0) = "=HEXINDEZ(TEIL(B"& n &";LÄNGE(B"& n & ")-8;8))"
arow(2) = "=F" & n & "+H" & n & "/1000000"
aTformula(i) = arow
next i
aTRange.setformulaArray(aTformula)
End Sub