Большое спасибо Маркусу за то, что он нашел решение.
Вот несколько более подробных инструкций для новичков OpenOffice Basic, таких как я. Это относится к версии 3.1:
Инструменты -> Макросы -> Организовать макросы -> OpenOffice.org Basic ...
Теперь выберите из дерева проводника, где вы хотите жить,
например это может быть в вашей собственной библиотеке макросов (My Macros / Standard) или
хранится непосредственно в текущей электронной таблице.
Теперь введите новое имя макроса и нажмите «Создать», чтобы открыть базовую среду разработки OO.org. Вы увидите 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
В приведенном выше коде есть небольшие улучшения по сравнению с оригиналом Маркуса:
Не начинается с разделителя, когда первая ячейка в диапазоне пуста.
Позволяет необязательный выбор разделителя (по умолчанию ",") и
строки, которые идут до и после каждой непустой записи в диапазоне
(по умолчанию "").
Я переименовал его в 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>