これに対する解決策を見つけてくれたMarkusに感謝します。
ここでは、私のような OpenOffice Basic の初心者向けに、もう少し詳細な手順を示します。これはバージョン 3.1 に適用されます。
ツール -> マクロ -> マクロの整理 -> OpenOffice.org Basic...
次に、エクスプローラー ツリーから関数をライブにする場所を選択します。たとえば、独自のマクロ ライブラリ (My Macros / Standard) に配置するか、現在のスプレッドシートに直接保存することができます。
ここで新しいマクロ名を入力し、[新規] をクリックして 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 のオリジナルから若干改善されています。
範囲内の最初のセルが空の場合、区切り記号で始まりません。
区切り文字 (デフォルトは ",") と、範囲内の空白以外の各エントリの前後にある文字列 (デフォルトは "") をオプションで選択できます。
「結合」は、Perl、Python、Ruby などのいくつかの一般的な言語でこの関数の典型的な名前であるため、名前を STRJOIN に変更しました。
変数はすべて小文字
マクロを保存し、結合を表示するセルに移動して、次のように入力します。
=STRJOIN(C3:C50)
C3:C50 を、結合する文字列の範囲に置き換えます。
区切り文字をカスタマイズするには、代わりに次のようなものを使用します。
=STRJOIN(C3:C50; " / ")
多数のメールアドレスに参加したい場合は、次を使用できます。
=STRJOIN(C3:C50; ", "; "<"; ">")
結果は次のようになります
<foo@bar.com>, <baz@qux.org>, <another@email.address>, <and@so.on>