Seite 1 von 1
[Gelöst] Spalte verschieben, Buchstaben voran stellen
Verfasst: Mi, 08.02.2012 18:15
von retuwe61
Hallo miteinander.
Kann man bereits beim Verschieben des Spalteninhaltes den Buchstaben "n" voranstellen?
Gruß
Uwe
Code: Alles auswählen
Sub Spalte_verschieben
oDoc = thisComponent
oQuellBlatt = oDoc.Sheets.getByName ("Filter1")
oCellCursor = oQuellBlatt.createCursor
oCellCursor.GotoEndOfUsedArea(True)
letzte_Zeile = oCellCursor.getRangeAddress.EndRow
letzte_Spalte= oCellCursor.getRangeAddress.EndColumn
oRange=oQuellBlatt.getCellRangeByPosition(0,0,0,letzte_Zeile)
oQuellRangeAddresse = oRange.getRangeAddress
aDat = oRange.getDataArray
oRange.clearContents(com.sun.star.sheet.CellFlags.VALUE+com.sun.star.sheet.CellFlags.STRING+com.sun.star.sheet.CellFlags.FORMULA)
oZielBlatt = oDoc.Sheets.getByName ("Filter2")
oZielRange = oZielBlatt.getCellRangeByPosition(1,0,1,letzte_Zeile)
oZielRange.setDataArray(aDat)
oErsetzen = oZielRange.createReplaceDescriptor()
oErsetzen.SearchString = "^."
oErsetzen.ReplaceString = "n&"
oErsetzen.SearchRegularExpression = True
oZielRange.ReplaceAll( oErsetzen )
End Sub
Re: Spalte verschieben, Buchstaben voran stellen
Verfasst: Mi, 08.02.2012 19:07
von turtle47
Hallo Uwe,
ersetze mal
durch
Jürgen
Re: Spalte verschieben, Buchstaben voran stellen
Verfasst: Mi, 08.02.2012 19:25
von Karolus
Hallo
turtle47 hat geschrieben:Hallo Uwe,
ersetze mal
durch
Jürgen
Wieso, die obere Zeile tut doch genau das Gleiche - hier funktioniert der code von retuwe.
oder sollen wir die Frage auf dem Wort "beim" betonen?
Kann man bereits beim Verschieben des Spalteninhaltes den Buchstaben "n" voranstellen?
Edit: In Python gehts relativ einfach 'adat'
vor dem ...setDataArray entsprechend zu ändern, in Basic ist mir Ummodelei der Arrayelemente zu blöd.
Gruß Karo
Re: Spalte verschieben, Buchstaben voran stellen
Verfasst: Mi, 08.02.2012 19:52
von retuwe61
Hallo Ihr beiden,
sorry, falls ich mich ungenau ausgedrückt haben sollte. Richtig, die Betonung liegt auf dem "beim Verschieben".
Ich hatte gehofft, dass die von dir für Python beschriebene Verfahrensweise auch unter Basic (leicht?) umgesetzt werden könnte.
VG
Uwe
Re: Spalte verschieben, Buchstaben voran stellen
Verfasst: Mi, 08.02.2012 20:59
von DPunch
Servus
Karolus hat geschrieben:in Basic ist mir Ummodelei der Arrayelemente zu blöd.
Wie meinst Du das? Vielleicht verstehe ich hier was fundamental falsch, aber viel einfacher als
Code: Alles auswählen
(...)
For i=0 To UBound(aDat)
aDat(i)(0) = "n" & aDat(i)(0)
Next i
oZielRange.setDataArray(aDat)
dürfte es auch in Python (oder sonstwo) nicht gehen.
Re: [Gelöst] Spalte verschieben, Buchstaben voran stellen
Verfasst: Mi, 08.02.2012 21:41
von retuwe61
Vielen Dank.
Gruß
Uwe
Re: Spalte verschieben, Buchstaben voran stellen
Verfasst: Mi, 08.02.2012 22:14
von Karolus
Hallo
DPunch hat geschrieben:Servus
Karolus hat geschrieben:in Basic ist mir Ummodelei der Arrayelemente zu blöd.
Wie meinst Du das? Vielleicht verstehe ich hier was fundamental falsch, aber viel einfacher als
Code: Alles auswählen
(...)
For i=0 To UBound(aDat)
aDat(i)(0) = "n" & aDat(i)(0)
Next i
oZielRange.setDataArray(aDat)
dürfte es auch in Python (oder sonstwo) nicht gehen.
Deine Schleife geht nur bei einer "einspaltigen" aDat, in Python ginge das gleich über eine unbestimmte Anzahl von Spalten in aDat:
Code: Alles auswählen
outDat = [ ]
for line in aDat:
outDat.append([ "n%s" % elem for elem in line ])
aDat = tuple( tuple( line ) for line in outDat )
oder kompakt :
Code: Alles auswählen
outDat =[[ "n%s" % elem for elem in line ] for line in aDat]
aDat = tuple( tuple( line ) for line in outDat )
Ich häng mal die ganze Übersetzung in Python hier an.
Gruß Karo
Re: [Gelöst] Spalte verschieben, Buchstaben voran stellen
Verfasst: Mi, 08.02.2012 22:29
von DPunch
Servus
Karolus hat geschrieben:Deine Schleife geht nur bei einer "einspaltigen" aDat, in Python ginge das gleich über eine unbestimmte Anzahl von Spalten in aDat:
Wenn es darum geht, einfach nur ein "n" voranzustellen, ist das doch auch bei mehrspaltigen DataArrays überhaupt kein Thema
Code: Alles auswählen
For lineCounter=0 To UBound(aDat)
For columnCounter=0 To UBound(aDat(lineCounter))
aDat(lineCounter)(columnCounter) = "n" & aDat(lineCounter)(columnCounter)
Next columnCounter
Next lineCounter
Komplizierter wird es nur, wenn man tatsächlich eine eigene Spalte voranstellen will, da würde man tatsächlich ein bisschen hantieren müssen, wenn es unbedingt in einem Array sein soll.