Grazie mille Markus per aver trovato una soluzione a questo.
Ecco alcune istruzioni leggermente più dettagliate a beneficio dei neofiti di OpenOffice Basic come me. Questo vale per la versione 3.1:
Strumenti -> Macro -> Organizza Macro -> OpenOffice.org Basic ...
ora scegliere tra l'albero esploratore in cui si desidera la funzione dal vivo, per esempio può essere nella tua libreria macro (My Macro/Standard) o memorizzata direttamente nel foglio di calcolo corrente.
Inserire ora un nuovo nome Macro e fare clic su Nuovo per aprire l'IDE di base OO.org. Vedrai una dichiarazione REM e alcune definizioni Sub stub. Eliminare tutto questo e sostituirlo con :
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
Il codice di cui sopra ha alcuni lievi miglioramenti da Markus' originale:
Non inizia con un delimitatore quando la prima cella nell'intervallo è vuoto.
Consente scelta facoltativa del delimitatore (il default è ""), e le stringhe che vanno prima e dopo ogni voce non vuoto nella gamma (default '').
L'ho rinominato STRJOIN poiché "join" è il nome tipico di questa funzione in diversi linguaggi popolari, come Perl, Python e Ruby.
Variabili tutto minuscolo
Ora salvare la macro, andare alla cella in cui si desidera che il join a comparire, e tipo:
=STRJOIN(C3:C50)
sostituzione C3: C50 con la gamma di stringhe a cui vuoi unirti.
Per personalizzare il delimitatore, invece usare qualcosa come:
=STRJOIN(C3:C50; "/")
Se si voleva far parte di un gruppo di indirizzi e-mail, è possibile utilizzare:
=STRJOIN(C3:C50; ", "; "<"; ">")
e il risultato sarebbe qualcosa di simile
<[email protected]>, <[email protected]>, <[email protected]>, <[email protected]>
Ciò otterrà una risposta migliore su Super User. Non è necessario ripubblicarlo poiché la domanda verrà spostata automaticamente. – ChrisF
Oh, wow, non sapevo nemmeno che esistesse un superutente. Grazie! –