Mehrere Zellen mit Trennzeichen in eine Zelle

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: Mehrere Zellen mit Trennzeichen in eine Zelle

Beitrag 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 ; "," )
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
DPunch
*******
Beiträge: 1112
Registriert: Mo, 02.11.2009 16:16
Wohnort: Marburg

Re: Mehrere Zellen mit Trennzeichen in eine Zelle

Beitrag 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.
Maggus
****
Beiträge: 108
Registriert: Mo, 01.08.2005 13:32
Kontaktdaten:

Re: Mehrere Zellen mit Trennzeichen in eine Zelle

Beitrag 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ß
Maggus (:o)
Antworten