[Gelöst] Spalte verschieben, Buchstaben voran stellen

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: [Gelöst] Spalte verschieben, Buchstaben voran stellen

Re: [Gelöst] Spalte verschieben, Buchstaben voran stellen

von DPunch » Mi, 08.02.2012 22:29

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.

Re: Spalte verschieben, Buchstaben voran stellen

von Karolus » Mi, 08.02.2012 22:14

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.
python_move_replace.ods
(11.57 KiB) 76-mal heruntergeladen
Gruß Karo

Re: [Gelöst] Spalte verschieben, Buchstaben voran stellen

von retuwe61 » Mi, 08.02.2012 21:41

Vielen Dank.
Gruß
Uwe

Re: Spalte verschieben, Buchstaben voran stellen

von DPunch » Mi, 08.02.2012 20:59

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: Spalte verschieben, Buchstaben voran stellen

von retuwe61 » Mi, 08.02.2012 19:52

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

von Karolus » Mi, 08.02.2012 19:25

Hallo
turtle47 hat geschrieben:Hallo Uwe,

ersetze mal

Code: Alles auswählen

oErsetzen.ReplaceString = "n&"
durch

Code: Alles auswählen

oErsetzen.ReplaceString = "n" & "&"
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

von turtle47 » Mi, 08.02.2012 19:07

Hallo Uwe,

ersetze mal

Code: Alles auswählen

oErsetzen.ReplaceString = "n&"
durch

Code: Alles auswählen

oErsetzen.ReplaceString = "n" & "&"
Jürgen

[Gelöst] Spalte verschieben, Buchstaben voran stellen

von retuwe61 » Mi, 08.02.2012 18:15

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

Nach oben