非常感谢 Markus 找到解决方案。
这里有一些更详细的说明,供像我这样的 OpenOffice Basic 新手使用。这适用于 3.1 版:
工具 -> 宏 -> 组织宏 -> OpenOffice.org Basic...
现在从资源管理器树中选择您希望函数存在的位置,例如它可以在您自己的宏库(我的宏/标准)中或直接存储在当前电子表格中。
现在输入一个新的宏名称并单击新建以打开 OO.org Basic IDE。您将看到一个 REM 语句和一些存根 Sub 定义。删除所有内容并将其替换为:
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
上述代码与 Markus 的原始代码相比略有改进:
现在保存宏,转到要显示连接的单元格,然后键入:
=STRJOIN(C3:C50)
将 C3:C50 替换为要加入的字符串范围。
要自定义分隔符,请改用以下内容:
=STRJOIN(C3:C50; " / ")
如果你想加入一堆电子邮件地址,你可以使用:
=STRJOIN(C3:C50; ", "; "<"; ">")
结果会是这样的
<foo@bar.com>, <baz@qux.org>, <another@email.address>, <and@so.on>