Vielen Dank Markus für eine Lösung dieses Problems zu finden.
Hier sind ein paar etwas detailliertere Anweisungen für OpenOffice Basic Neulinge wie mich. Dies gilt für Version 3.1:
Extras -> Makros -> Makros -> OpenOffice.org Basic ...
Und von dem Explorer-Baum wählen, wo Sie Ihre Funktion leben wollen, z.B. Es kann in Ihrer eigenen Makro-Bibliothek (My Macros/Standard) oder direkt in der aktuellen Tabelle gespeichert werden.
Geben Sie nun einen neuen Makronamen ein und klicken Sie auf Neu, um die OO.org Basic IDE zu öffnen. Sie sehen eine REM -Anweisung und einige Stub-Subdefinitionen. Löschen, dass alle und ersetzen es mit:
Function STRJOIN(range, Optional delimiter As String, Optional before As String, Optional after As String)
Dim row, col As Integer
Dim result, cell As String
result = ""
If IsMissing(delimiter) Then
delimiter = ","
End If
If IsMissing(before) Then
before = ""
End If
If IsMissing(after) Then
after = ""
End If
If NOT IsMissing(range) Then
If NOT IsArray(range) Then
result = before & range & after
Else
For row = LBound(range, 1) To UBound(range, 1)
For col = LBound(range, 2) To UBound(range, 2)
cell = range(row, col)
If cell <> 0 AND Len(Trim(cell)) <> 0 Then
If result <> "" Then
result = result & delimiter
End If
result = result & before & range(row, col) & after
End If
Next
Next
End If
End If
STRJOIN = result
End Function
Der obige Code hat einige leichte Verbesserungen von Markus' original:
nicht mit einem Trennzeichen beginnen, wenn die erste Zelle im Bereich leer.
Ermöglicht optional Wahl des Trennzeichens (standardmäßig „“), und die Strings, die gehen vor und nach jedem nicht-leeren Eintrag im Bereich (default auf ‚‘).
Ich habe es STRJOIN umbenannt, seit "Join" ist der typische Name dieser Funktion in mehreren gängigen Sprachen, wie Perl, Python und Ruby.
Variablen alle Klein
nun das Makro speichern, in die Zelle, wo Sie die, und Typ erscheinen anschließen möchten:
=STRJOIN(C3:C50)
ersetzt C3: C50 mit dem Bereich von Zeichenfolgen, denen Sie beitreten möchten.
das Trennzeichen anzupassen, anstatt so etwas wie verwenden:
=STRJOIN(C3:C50; ", "; "<"; ">")
und das Ergebnis wäre etwas, wie:
=STRJOIN(C3:C50; "/")
Wenn Sie eine Reihe von E-Mail-Adressen beitreten wollen, Sie nutzen könnten
<[email protected]>, <[email protected]>, <[email protected]>, <[email protected]>
Dies wird eine bessere Antwort auf Super User erhalten. Sie müssen es dort nicht erneut eingeben, da die Frage automatisch verschoben wird. – ChrisF
Oh, wow, ich wusste nicht einmal, dass Super User existiert. Vielen Dank! –