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