3

В Excel 2003 есть способ объединить значения в диапазоне ячеек с разделителем-запятой между ними, не вводя ссылки на отдельные ячейки, например, конкатенировать A86:A90 и конкатенировать A193:A198 с разделителем запятых между каждой отдельной ячейкой; получить тот же результат, что и

=(A86 & "," A87 & "," & A88 & "," A89 & "," & A90 & "," & A193 & "," & A194 & "," & A195 & "," & A196 & "," & A197 & "," & A198)

1 ответ1

1

Поскольку вы хотите объединить блоки ячеек, рассмотрите возможность использования следующей пользовательской функции:

Public Function KonKat(ParamArray rngs()) As String
    Dim r As Range, i As Long, rr As Range, s As String

    For i = LBound(rngs) To UBound(rngs)
        Set rr = rngs(i)
        For Each r In rr
            If s = "" Then
                s = r.Text
            Else
                s = s & "," & r.Text
            End If
        Next r
    Next i

    KonKat = s
End Function

Например:

Пользовательские функции (UDF) очень просты в установке и использовании:

  1. ALT-F11 открывает окно VBE
  2. ALT-I ALT-M открывает новый модуль
  3. вставьте материал и закройте окно VBE

Если вы сохраните книгу, UDF будет сохранен вместе с ней. Если вы используете версию Excel более поздней, чем в 2003 году, вы должны сохранить файл как .xlsm, а не .xlsx

Чтобы удалить UDF:

  1. откройте окно VBE, как указано выше
  2. очистить код
  3. закройте окно VBE

Чтобы использовать UDF из Excel:

=KonKat(B1:D1,C3:E3)

Чтобы узнать больше о макросах в целом, смотрите:

http://www.mvps.org/dmcritchie/excel/getstarted.htm

а также

http://msdn.microsoft.com/en-us/library/ee814735(v=office.14).aspx

Для подробностей о UDF смотрите:

http://www.cpearson.com/excel/WritingFunctionsInVBA.aspx

Подробнее о ParamArray смотрите:

http://www.tushar-mehta.com/publish_train/xl_vba_cases/1005%20ParamArray.shtml

Макросы должны быть включены, чтобы это работало!

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .