Excel предоставляет одну функцию книги и один оператор, которые имеют одну и ту же цель — объединить строки в более длинную строку. Функция СЦЕПИТЬ и оператор амперсанда (&) имеют, по сути, одну и ту же цель.

Многие люди предпочитают оператор амперсанда функции СЦЕПИТЬ, поскольку она требует меньшего набора текста, но СЦЕПИТЬ стала бы намного более ценной, если бы она обрабатывала диапазон ячеек.

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

Рассмотрим следующий макрос:

Function Concat1(myRange As Range, Optional myDelimiter As String)

Dim r As Range

Application.Volatile     For Each r In myRange         Concat = Concat & r & myDelimiter     Next r     If Len(myDelimiter) > 0 Then         Concat = Left(Concat, Len(Concat) - Len(myDelimiter))

End If End Function

Эта функция требует диапазона и предоставляет дополнительный разделитель.

Последний оператор «If» удаляет последний конечный разделитель из объединенной строки. С помощью функции CONCAT1 ячейки могут быть добавлены и удалены в пределах диапазона без обслуживания, требуемого формулами CONCATENATE или амперсанда. Все, что вам нужно сделать, это вызвать функцию одним из следующих способов:

=CONCAT1(C8:E10)

=CONCAT1(C8:E10,"|")

Второй метод вызова функции использует необязательный разделитель, который вставляется между каждым из объединенных значений из диапазона C8: E10. Однако с этим возникает проблема: если ячейка в этом диапазоне пуста, вы можете получить два последовательных разделителя. Если вы предпочитаете использовать только один разделитель, вам нужно внести в функцию одно небольшое изменение:

Function Concat2(myRange As Range, Optional myDelimiter As String)

Dim r As Range

Application.Volatile     For Each r In myRange         If Len(r.Text) > 0 Then             Concat = Concat & r & myDelimiter         End If     Next r     If Len(myDelimiter) > 0 Then         Concat = Left(Concat, Len(Concat) - Len(myDelimiter))

End If End Function

_Примечание: _

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

link: / excelribbon-ExcelTipsMacros [Щелкните здесь, чтобы открыть эту специальную страницу в новой вкладке браузера].

ExcelTips — ваш источник экономичного обучения Microsoft Excel.

Этот совет (3062) применим к Microsoft Excel 97, 2000, 2002 и 2003. Вы можете найти версию этого совета для ленточного интерфейса Excel (Excel 2007 и новее) здесь:

link: / excelribbon-Concatenating_Ranges_of_Cells [Конкатенация диапазонов ячеек].