Seite 1 von 1

Re: Mehrere Zellen mit Trennzeichen in eine Zelle

Verfasst: Mo, 26.09.2011 13:50
von komma4
Angepasst, nach einem Beispiel von Stephan (hier)

Code: Alles auswählen

Function Verketten1( vBereich, Trennzeichen ) 
' 2011-09-26

' Schleife durch 1 Dimension (Zeilen)
   for i=1 to UBound(vBereich,1)
   ' Schleife durch zweite Dimension (Spalten)
      for j=1 to UBound(vBereich,2)
         Kette = Kette & vBereich(i,j) & Trennzeichen

      next j
   next i

Verketten1 = LEFT( Kette, LEN( Kette ) - LEN( Trennzeichen ) )

End Function
Klappt allerdings nur, wenn wirklich ein Bereich übergeben wird

Code: Alles auswählen

=VERKETTEN1( A1:B9 ; "," )
Einzelne Zelle dann auch als "Bereich" übergeben (wobei das keinen Sinn ergibt 8))

Code: Alles auswählen

=VERKETTEN1( B9:B9 ; "," )

Re: Mehrere Zellen mit Trennzeichen in eine Zelle

Verfasst: Mo, 26.09.2011 16:32
von DPunch
Aloha
komma4 hat geschrieben:Einzelne Zelle dann auch als "Bereich" übergeben (wobei das keinen Sinn ergibt 8))

Code: Alles auswählen

=VERKETTEN1( B9:B9 ; "," )
Oder mit Verzweigung arbeiten ala

Code: Alles auswählen

Function Verketten1(vBereich, Trennzeichen) as String
' 2011-09-26
	if typename(vbereich) <> "Variant()" Then
		Verketten1 = vBereich
	else
	' Schleife durch 1 Dimension (Zeilen)
		for i=1 to UBound(vBereich,1)
		' Schleife durch zweite Dimension (Spalten)
			for j=1 to UBound(vBereich,2)
				Kette = Kette & vBereich(i,j) & Trennzeichen
			next j
		next i
		Verketten1 = LEFT( Kette, LEN( Kette ) - LEN( Trennzeichen ) )
	end if
End Function
Dadurch macht das Verketten einer einzelnen Zelle zwar immer noch nicht mehr Sinn, aber man ist die Fehlermeldung los.

Re: Mehrere Zellen mit Trennzeichen in eine Zelle

Verfasst: Mi, 28.09.2011 14:03
von Maggus
Also die simpelste Lösung um das Beispiel darzustellen ist wohl mit join()

Code: Alles auswählen

Sub verketten()
  Dim a(3)
  MySheet = ThisComponent.getCurrentController.ActiveSheet
  For i = 0 To 3
    a(i) = MySheet.getCellByPosition(0,i).String
  Next i
  MySheet.getCellByPosition(1,2).String = join(a,",")
End Sub
Einfach entsprechend erweitern ;-)

Gruß