Muchas gracias a Markus por encontrar una solución a esto.
Aquí hay algunas instrucciones un poco más detalladas para el beneficio de principiantes de OpenOffice Basic como yo. Esto se aplica a la versión 3.1:
Herramientas -> Macros -> Organizar Macros -> OpenOffice.org Basic ...
Ahora seleccione desde el árbol del explorador en la que desea que su función en vivo, por ejemplo, puede estar en su propia macro biblioteca (My Macros/Standard) o almacenada directamente en la hoja de cálculo actual.
Ahora ingrese un nuevo nombre de Macro y haga clic en Nuevo para abrir el IDE Básico de OO.org. Verá una instrucción REM y algunas definiciones secundarias. Eliminar todo eso y reemplazar 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
El código anterior tiene algunas mejoras leves de Markus' original:
no comienza con un delimitador cuando la primera celda del rango es vacío.
Permite la elección opcional del delimitador (por defecto ""), y las cuerdas que van antes y después de cada entrada no esté en blanco en el rango (por defecto a '').
Lo renombré STRJOIN ya que "join" es el nombre típico de esta función en varios idiomas populares, como Perl, Python y Ruby.
variables en minúsculas
Ahora guarde la macro, vaya a la celda en la que desea que la unen a aparecer, y tipo:
=STRJOIN(C3:C50)
reemplazando C3: C50 con la gama de cadenas a las que te quieres unir
Para personalizar el delimitador, en lugar usar algo como:
=STRJOIN(C3:C50; "/")
Si desea unirse a un grupo de direcciones de correo electrónico, puede utilizar:
=STRJOIN(C3:C50; ", "; "<"; ">")
y el resultado sería algo así como
<[email protected]>, <[email protected]>, <[email protected]>, <[email protected]>
Esto obtendrá una mejor respuesta en Superusuario. No necesita volver a publicar allí ya que la pregunta se moverá automáticamente. – ChrisF
Oh, wow, ni siquiera sabía que existiera el súper usuario. ¡Gracias! –