Zellen von Sheet A nach Sheet B kopieren
Moderator: Moderatoren
Zellen von Sheet A nach Sheet B kopieren
Hallo Leute
So nachdem ich nun das Forum vergeblich nach einem passenden Makro durchsucht habe versuche ich es nun so.
Ich habe eine Calc Datei mit mehreren Sheets. Im 1.Sheet sind meine Rohdaten abgespeichert.
Nun bräuchte ich ein Makro das mir Aus diesem Sheet bestimmte Werte kopiert und auf in ein anderes Sheet speichert.
Anschließend soll er eine bestimmte Anzahl von Zeilen weitergehen und von vorne beginnen.
Hab mal mit dem Recorder versucht es herauszubekomen aber irgendwie Blick ich in Basic nicht durch.
Hatte alles zwar schon in Excel laufen aber in OO bring ich es nicht hin.
Ich hoffe ihr könnt mir ein wenig weiterhelfen.
MFg
Sir_Duke
So nachdem ich nun das Forum vergeblich nach einem passenden Makro durchsucht habe versuche ich es nun so.
Ich habe eine Calc Datei mit mehreren Sheets. Im 1.Sheet sind meine Rohdaten abgespeichert.
Nun bräuchte ich ein Makro das mir Aus diesem Sheet bestimmte Werte kopiert und auf in ein anderes Sheet speichert.
Anschließend soll er eine bestimmte Anzahl von Zeilen weitergehen und von vorne beginnen.
Hab mal mit dem Recorder versucht es herauszubekomen aber irgendwie Blick ich in Basic nicht durch.
Hatte alles zwar schon in Excel laufen aber in OO bring ich es nicht hin.
Ich hoffe ihr könnt mir ein wenig weiterhelfen.
MFg
Sir_Duke
Hey Sir_Duke,
Wie soll man dir sonst helfen können? etwa so:
???
Gruss
Thomas
Hmm, kanns ein bischen genauer sein? Wie heisst das "sheet", was für Werte (Zelladressen, Inhalte) und wohin (Tabellenname, Zelladressen etc).Nun bräuchte ich ein Makro das mir Aus diesem Sheet bestimmte Werte kopiert und auf in ein anderes Sheet speichert.
Wie soll man dir sonst helfen können? etwa so:
Code: Alles auswählen
dim aDat()
oDoc = thisComponent
oBereich1 = oDoc.sheets(0).getCellRangeByName("A6:b14")
aDat = oBereich1.getDataArray()
oBereich2 = oDoc.sheets(1).getCellRangeByName("b6:c14")
oBereich2.setDataArray(aDat())
Gruss
Thomas
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
Sorry Thomas das es so ungenau war. Ich dachte ich fasse es etwas allgemeiner damit mehr leute darauf zurück greifen können.
Aber nun konkret.
Es sollen Zellinhalte von Sheet(Tabellenblatt) "CSV" nach "DATEN" kopiert werden.
1) "CSV" Spalte: AL ; Zeile 673 ----> "DATEN" Spalte A ; Zeile 1017
2) "CSV" Spalte: AO; Zeile 675 ----> "DATEN" Spalte B ; Zeile 1017
3) "CSV" Spalte: AO; Zeile 676 ----> "DATEN" Spalte C ; Zeile 1017
Danach geht es immer um 4 Zeilen nach unten (Spalten bleiben gleich)
Also:
1) "CSV" Spalte: AL ; Zeile 677 ----> "DATEN" Spalte A ; Zeile 1018
2) "CSV" Spalte: AO; Zeile 679 ----> "DATEN" Spalte B ; Zeile 1018
3) "CSV" Spalte: AO; Zeile 680 ----> "DATEN" Spalte C ; Zeile 1018
Ich hoffe das die Angaben reichen.
Mfg
Erwin
Aber nun konkret.
Es sollen Zellinhalte von Sheet(Tabellenblatt) "CSV" nach "DATEN" kopiert werden.
1) "CSV" Spalte: AL ; Zeile 673 ----> "DATEN" Spalte A ; Zeile 1017
2) "CSV" Spalte: AO; Zeile 675 ----> "DATEN" Spalte B ; Zeile 1017
3) "CSV" Spalte: AO; Zeile 676 ----> "DATEN" Spalte C ; Zeile 1017
Danach geht es immer um 4 Zeilen nach unten (Spalten bleiben gleich)
Also:
1) "CSV" Spalte: AL ; Zeile 677 ----> "DATEN" Spalte A ; Zeile 1018
2) "CSV" Spalte: AO; Zeile 679 ----> "DATEN" Spalte B ; Zeile 1018
3) "CSV" Spalte: AO; Zeile 680 ----> "DATEN" Spalte C ; Zeile 1018
Ich hoffe das die Angaben reichen.
Mfg
Erwin
Hallo
Mit ein paar Mausklicks aus :
http://www.dannenhoefer.de/faqstarbasic/
zusammengetragen, und konkret auf deine Zielvorstellung modifiziert :
Das gleiche Ergebnis erhälst du mit der Funktion (in DATEN.A1018):
=INDIREKT("CSV.AL"&ZEILE(A1)*4+673)
für Spalte B und C anpassen und alles zusammen nach unten ausfüllen.
Gruß Karo
Mit ein paar Mausklicks aus :
http://www.dannenhoefer.de/faqstarbasic/
zusammengetragen, und konkret auf deine Zielvorstellung modifiziert :
Code: Alles auswählen
Sub copyschleife
odoc = thisComponent
mySheet1 = oDoc.Sheets().getByName("CSV")
mySheet2 = oDoc.Sheets().getByName("DATEN")
m = 1017 'erste Zeilennr. Zielbereich
for n = 673 to 1050 step 4 'Zeilennr. Quellbereich (von,bis,Schrittweite)
oQuelleRange1=mySheet1.getCellRangeByName("AL" & n)
oQuelleRange2=mySheet1.getCellRangeByName("AO" & n+2)
oQuelleRange3=mySheet1.getCellRangeByName("AO" & n+3)
oZiel1 = mySheet2.getCellByPosition(0,m-1)
oZiel2 = mySheet2.getCellByPosition(1,m-1)
oZiel3 = mySheet2.getCellByPosition(2,m-1)
oQuellRangeAddresse = oQuelleRange1.getRangeAddress
oZielCellAdresse=oZiel1.getCellAddress
mySheet2.copyRange(oZielCellAdresse,oQuellRangeAddresse)
oQuellRangeAddresse = oQuelleRange2.getRangeAddress
oZielCellAdresse=oZiel2.getCellAddress
mySheet2.copyRange(oZielCellAdresse,oQuellRangeAddresse)
oQuellRangeAddresse = oQuelleRange3.getRangeAddress
oZielCellAdresse=oZiel3.getCellAddress
mySheet2.copyRange(oZielCellAdresse,oQuellRangeAddresse)
m = m+1
next n
End Sub
=INDIREKT("CSV.AL"&ZEILE(A1)*4+673)
für Spalte B und C anpassen und alles zusammen nach unten ausfüllen.
Gruß Karo
Hallo Sir Duke
Gruß Karo
Excel kann das auch, die Formel lautet :Ich dachte ich benötige hierfür ein Makro da EXCEL es auch nur mit konnte
Code: Alles auswählen
=INDIREKT("CSV!AL"&ZEILE(A1)*4+673)
Hallo,Toxitom hat geschrieben: Wie soll man dir sonst helfen können? etwa so:Code: Alles auswählen
dim aDat() oDoc = thisComponent oBereich1 = oDoc.sheets(0).getCellRangeByName("A6:b14") aDat = oBereich1.getDataArray() oBereich2 = oDoc.sheets(1).getCellRangeByName("b6:c14") oBereich2.setDataArray(aDat())
wo kann man diese Funktionen nachlesen? getCellRangeByName() finde ich im "Star Office Programmierhandbuch BASIC" unter docs.sun.com/app/docs/coll/1274.1 Aber wo sind Funktionen wie getDataArray()?
Danke, jo