Откройте Office Spreadsheet (Calc) - Связывают текстовые ячейки с разделителями

Это не просто связанная.NET, но это в духе объекта Пробелов использования в вопросе.

подсказки по Сенсорной панели для MacBook рабочий Leopard (может не поддерживаться в более ранних версиях OS X):

  • Установки системы Набора, Клавиатура & Мышь, Сенсорная панель для использования Двух Пальцев Вторичный Щелчок. Это позволяет Вам использовать два касания пальца вместо Управления + комбинация Щелчка для Вторичного Щелчка (лучше знают как контекстное меню нам разработчиков.NET).

  • Установки системы Набора, Клавиатура & Мышь, Сенсорная панель для использования Двух Экранного Масштабирования Пальца для увеличения области на экране путем поддержания Клавиши CTRL и прокрутки или вниз. Это полезно для того, чтобы быстро увеличить мелкие шрифты или деталь изображения в любом приложении Mac и в Windows, работающем под VMware Fusion. Можно выбрать или Управление, Функциональные или Командные клавиши для изменения масштаба путем нажатия кнопки Options наряду с другими настройками.

13
задан Matthew 1 January 2010 в 21:29
поделиться

2 ответа

Что ж, после долгих поисков и экспериментов я обнаружил, что вы можете создавать свои собственные функции в calc. Это созданная мной функция, которая делает то, что я хочу:

Function STRCONCAT(range)
    Dim Row, Col As Integer
    Dim Result As String
    Dim Temp As String

    Result = ""
    Temp = ""

    If NOT IsMissing(range) Then
        If NOT IsArray(range) Then
            Result = "(" & range & ")"
        Else
            For Row = LBound(range, 1) To UBound(range, 1)
                For Col = LBound(range, 2) To UBound(range, 2)
                    Temp = range(Row, Col)
                    Temp = Trim(Temp)
                    If range(Row, Col) <> 0 AND Len(Temp) <> 0 Then
                        If(NOT (Row = 1 AND Col = 1)) Then Result = Result & ", "
                        Result = Result & "(" & range(Row, Col) & ") "
                    End If
                Next
            Next
        End If
    End If

    STRCONCAT = Result
End Function
8
ответ дан 1 December 2019 в 19:02
поделиться

Большое спасибо Маркусу за найденное решение.

Вот несколько более подробных инструкций для новичков в OpenOffice Basic, вроде меня. Это относится к версии 3.1:

Tools -> Macros -> Organize Macros -> OpenOffice.org Basic...

Теперь выберите в дереве проводника, где вы хотите разместить вашу функцию, например, она может быть в вашей собственной библиотеке макросов (Мои макросы / Стандартные) или храниться непосредственно в текущей электронной таблице.

Теперь введите имя нового макроса и нажмите кнопку New, чтобы открыть 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

Приведенный выше код имеет некоторые незначительные улучшения по сравнению с оригиналом Маркуса:

  • Не начинается с разделителя, когда первая ячейка в диапазоне пуста.

  • Позволяет опционально выбирать разделитель (по умолчанию ",") и строки, которые идут до и после каждой ячейки. строки, которые идут до и после каждой непустой записи в диапазоне (по умолчанию "").

  • Я переименовал ее в 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>
30
ответ дан 1 December 2019 в 19:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: