Excel макрос все данные в одну строку

Хитрости »

5 Август 2013              151117 просмотров


Сцепить много ячеек с указанным разделителем

Часто бывает ситуация, когда необходимо из трех разных столбцов сцепить данные в одну строку с разделителем. Допустим в А1 Фамилия, в В1Имя, в С1Отчество, а надо получить все вместе Фамилия Имя Отчество. Как обычно в Excel объединяют значения нескольких ячеек в одну? Правильно, при помощи функции СЦЕПИТЬ или при помощи амперсанда:
=СЦЕПИТЬ(A1;» «;B1;» «;C1;» «)
=A1&» «&B1&» «&C1&» «
Это достаточно эффективно, если необходимо сцепить значения из трех-пяти ячеек. А если ячеек 50? Или того больше? Не очень удобно объединять их все описанными выше способами. А других встроенных функций в Excel для подобных операций не существует. С момента написания статьи Microsoft порадовал нас новыми функциями и теперь в составе функций есть функция ОБЪЕДИНИТЬ(TEXTJOIN), которая способна решить задачу без лишних телодвижений.
=ОБЪЕДИНИТЬ(«, «;ИСТИНА;A2:A100)
=TEXTJOIN(«, «,TRUE,A2:A100)

    Разделитель(«, «) — разделитель, с которым объединять текст из указанных ячеек
    Пропускать пустые(ИСТИНА) — указывает пропускать ли пустые ячейки. Т.е. если указано ИСТИНА или 1(а так же если аргумент вовсе не указан) — пустые ячейки будут пропускаться и не попадут в общую строку сцепки. Если указано ЛОЖЬ — сцепляться будут все ячейки, независимо от их содержимого. Например, если указать три ячейки A1:A3 в которых А2 пустая, то при указании ИСТИНА результат будет таким: «один, два». Если указать ЛОЖЬ, то пустая ячейка тоже попадет в сцепку: «один, , два».
    Так же этот аргумент удобен, если неизвестен заранее размер диапазона сцепления. Можно указать ячейки чуть с запасом(A1:A300) и тогда сцепляться будут только ячейки заполненного диапазона.
    Текст(A2:A100) — указывается непосредственно диапазон либо текст для сцепления. Этот аргумент расширяемый — т.е. можно указать не один диапазон, а несколько или просто текст: =ОБЪЕДИНИТЬ(«, «;ИСТИНА;A2:A100;B2:B70;»текст»)

Правда и здесь не все так радужно: эта функция доступна только пользователям версий 2019 и выше, а так же офиса 365.


Поэтому я написал функцию пользователя, которая сцепляет данные из указанных ячеек в одну строку и использовать её можно в любой версии офиса. Чем отличается от стандартной функции СЦЕПИТЬ()? Тем, что в качестве ячеек для сцепки указывается не каждая из ячеек по очереди, а сразу весь диапазон с возможностью указания разделителя между значениями каждой ячейки. Так же, в функции сразу заложен алгоритм пропуска пустых ячеек и возможность сцеплять исключительно уникальные значения — т.е. в результате будут сцепляться только те ячейки, значения которых ранее еще не были добавлены в сцепку.

Option Explicit
'---------------------------------------------------------------------------------------
' Procedure : СцепитьМного
'             http://www.excel-vba.ru
' Purpose   : Функция сцепляет все указанные ячейки в одну с указанным разделителем.
' Аргументы функции:
' Диапазон    — диапазон ячеек, значения которых необходимо объединить в строку.
' Разделитель — необязательный аргумент.
'               Один или несколько символов, которые будут вставлены между каждым словом.
'               По умолчанию пробел.
' БезПовторов — необязательный аргумент.
'               Если указан как ИСТИНА или 1 — в результирующей строке будут значения без дубликатов.
'               Для английской локализации данный параметр указывается как TRUE и FALSE соответственно.
'---------------------------------------------------------------------------------------
Function СцепитьМного(Диапазон As Range, Optional Разделитель As String = " ", Optional БезПовторов As Boolean = False)
    Dim avData, lr As Long, lc As Long, sRes As String
    Dim oDict As Object, sTmpStr
    Set oDict = CreateObject("Scripting.Dictionary")
    oDict.comparemode = 1
 
    avData = Диапазон.Value
    If Not IsArray(avData) Then
        СцепитьМного = avData
        Exit Function
    End If
 
    For lc = 1 To UBound(avData, 2)
        For lr = 1 To UBound(avData, 1)
            If Len(avData(lr, lc)) Then
                sRes = sRes & Разделитель & avData(lr, lc)
                If БезПовторов Then
                    If Not oDict.exists(avData(lr, lc)) Then
                        oDict.Add avData(lr, lc), 0&
                    End If
                End If
            End If
        Next lr
    Next lc
    If Len(sRes) Then
        sRes = Mid(sRes, Len(Разделитель) + 1)
    End If
 
    If БезПовторов Then
        sRes = ""
        sTmpStr = oDict.keys
        For lr = LBound(sTmpStr) To UBound(sTmpStr)
            sRes = sRes & IIf(sRes <> "", Разделитель, "") & sTmpStr(lr)
        Next lr
    End If
    СцепитьМного = sRes
End Function

Чтобы правильно использовать приведенный код, необходимо сначала ознакомиться со статьей Что такое функция пользователя(UDF)?. Вкратце: скопировать текст кода выше, перейти в редактор VBA(Alt+F11) -создать стандартный модуль(InsertModule) и в него вставить скопированный текст. После чего функцию можно будет вызвать из Диспетчера функций(Shift+F3), отыскав её в категории Определенные пользователем (User Defined Functions).

Синтаксис функции:
=СцепитьМного(A2:A100;», «;ИСТИНА)

Диапазон — диапазон ячеек, значения которых необходимо объединить в строку.
Разделитель — необязательный аргумент. Один или несколько символов, которые будут вставлены между каждым словом. По умолчанию пробел.
БезПовторов — необязательный аргумент. Если указан как ИСТИНА или 1 — в результирующей строке будут значения без дубликатов. Например, из значений Сидоров, Петров, Сидоров, Иванов в результат попадут только Сидоров, Петров, Иванов. Если ЛОЖЬ или 0 — будут выведены все значения. Для английской локализации данный параметр указывается как TRUE и FALSE соответственно.

Скачать пример

  СцепитьМного.xls (52,5 KiB, 11 993 скачиваний)


Если необходимо объединять значения ячеек из «рваных»(несмежных) диапазонов(выделенных через Ctrl), то код нужно немного изменить:

Option Explicit
'---------------------------------------------------------------------------------------
' Procedure : СцепитьМного
'             http://www.excel-vba.ru
' Purpose   : Функция сцепляет все указанные ячейки в одну с указанным разделителем. Допускается указание несмежных диапазонов
' Аргументы функции:
' Диапазон    — диапазон ячеек, значения которых необходимо объединить в строку.
' Разделитель — необязательный аргумент.
'               Один или несколько символов, которые будут вставлены между каждым словом.
'               По умолчанию пробел.
' БезПовторов — необязательный аргумент.
'               Если указан как ИСТИНА или 1 — в результирующей строке будут значения без дубликатов.
'               Для английской локализации данный параметр указывается как TRUE и FALSE соответственно.
'---------------------------------------------------------------------------------------
Function СцепитьМного(диапазон As Range, Optional разделитель As String = " ", Optional БезПовторов As Boolean = False)
    Dim avData, lr As Long, lc As Long, sRes As String
    Dim ra As Range
 
    For Each ra In диапазон.Areas
      avData = ra.Value
      If Not IsArray(avData) Then
          ReDim avData(1 To 1, 1 To 1)
          avData(1, 1) = ra.Value
      End If
 
      For lc = 1 To UBound(avData, 2)
          For lr = 1 To UBound(avData, 1)
              If Len(avData(lr, lc)) Then
                  sRes = sRes & разделитель & avData(lr, lc)
              End If
          Next lr
      Next lc
    Next
    If Len(sRes) Then
        sRes = Mid(sRes, Len(разделитель) + 1)
    End If
 
    If БезПовторов Then
        Dim oDict As Object, sTmpStr
        Set oDict = CreateObject("Scripting.Dictionary")
        sTmpStr = Split(sRes, разделитель)
        On Error Resume Next
        For lr = LBound(sTmpStr) To UBound(sTmpStr)
            oDict.Add sTmpStr(lr), sTmpStr(lr)
        Next lr
        sRes = ""
        sTmpStr = oDict.Keys
        For lr = LBound(sTmpStr) To UBound(sTmpStr)
            sRes = sRes & IIf(sRes <> "", разделитель, "") & sTmpStr(lr)
        Next lr
    End If
    СцепитьМного = sRes
End Function

Однако в таком случае слегка изменится и синтаксис — такие диапазоны обязательно надо будет записывать в скобках:
Синтаксис функции:
=СцепитьМного((A2:A100;F4:F60;Y2:Z43);», «;ИСТИНА)
Иначе функция просто не сработает и выдаст ошибку #ЗНАЧ!(#VALUE!)


И еще одна реализация — в ней допускается указывать не только отдельные диапазоны, но и вообще все что угодно(ячейки, отдельный текст, числа и т.п.). Единственная проблема — в этой функции иначе организован порядок аргументов: сначала указывается разделитель, а уже потом значения для сцепления. Более подробно эта функция рассмотрена в статье Что такое функция пользователя(UDF)?. Так же эта функция не убирает дубли, что впрочем, не так сложно добавить, ориентируясь на функции выше.

Function ОбъединитьВсеСРазделителем(Разделитель As String, ParamArray Значения()) As String
    Dim result As String, arg, x, rc As Range
    For Each arg In Значения
        Select Case TypeName(arg)
        Case "Range"                     'это диапазон
            'цикл по всем ячейкам
            For Each rc In arg.Cells
                If result = "" Then
                    result = rc.Value
                Else
                    result = result & Разделитель & rc.Value
                End If
            Next
        Case "Variant()"                 'это произвольный массив({"а";"б";"в"})
            'цикл по всем ячейкам
            For Each x In arg
                If result = "" Then
                    result = x
                Else
                    result = result & Разделитель & x
                End If
            Next
        Case Else 'это любой другой тип
            'суммируем
            If result = "" Then
                result = arg
            Else
                result = result & Разделитель & arg
            End If
        End Select
    Next
    ОбъединитьВсеСРазделителем = result
End Function

Также см.:
Сцепить_МН
Как сцепить несколько значений в одну ячейку по критерию? СцепитьЕсли
Что такое функция пользователя(UDF)?


Статья помогла? Поделись ссылкой с друзьями!

  Плейлист   Видеоуроки


Поиск по меткам



Access
apple watch
Multex
Power Query и Power BI
VBA управление кодами
Бесплатные надстройки
Дата и время
Записки
ИП
Надстройки
Печать
Политика Конфиденциальности
Почта
Программы
Работа с приложениями
Разработка приложений
Росстат
Тренинги и вебинары
Финансовые
Форматирование
Функции Excel
акции MulTEx
ссылки
статистика

Надпись на заборе: «Катя + Миша + Семён + Юра + Дмитрий Васильевич +
товарищ Никитин + рыжий сантехник + Витенька + телемастер Жора +
сволочь Редулов + не вспомнить имени, длинноволосый такой +
ещё 19 мужиков + муж = любовь!»

Способ 1. Функции СЦЕПИТЬ, СЦЕП и ОБЪЕДИНИТЬ

В категории Текстовые есть функция СЦЕПИТЬ (CONCATENATE), которая соединяет содержимое нескольких ячеек (до 255) в одно целое, позволяя комбинировать их с произвольным текстом. Например, вот так:

Склейка текста функцией СЦЕПИТЬ

Нюанс: не забудьте о пробелах между словами — их надо прописывать как отдельные аргументы и заключать в скобки, ибо текст. 

Очевидно, что если нужно собрать много фрагментов, то использовать эту функцию уже не очень удобно, т.к. придется прописывать ссылки на каждую ячейку-фрагмент по отдельности. Поэтому, начиная с 2016 версии Excel, на замену функции СЦЕПИТЬ пришла ее более совершенная версия с похожим названием и тем же синтаксисом — функция СЦЕП (CONCAT). Ее принципиальное отличие в том, что теперь в качестве аргументов можно задавать не одиночные ячейки, а целые диапазоны — текст из всех ячеек всех диапазонов будет объединен в одно целое:

Склейка функцией СЦЕП

Для массового объединения также удобно использовать новую функцию ОБЪЕДИНИТЬ (TEXTJOIN), появившуюся начиная с Excel 2016. У нее следующий синтаксис:

=ОБЪЕДИНИТЬ(Разделитель; Пропускать_ли_пустые_ячейки; Диапазон1; Диапазон2 … )

где

  • Разделитель — символ, который будет вставлен между фрагментами
  • Второй аргумент отвечает за то, нужно ли игнорировать пустые ячейки (ИСТИНА или ЛОЖЬ)
  • Диапазон 1, 2, 3 … — диапазоны ячеек, содержимое которых хотим склеить

Например:

Склейка текста функцией ОБЪЕДИНИТЬ

Способ 2. Символ для склеивания текста (&)

Это универсальный и компактный способ сцепки, работающий абсолютно во всех версиях Excel. 

Для суммирования содержимого нескольких ячеек используют знак плюс «+«, а для склеивания содержимого ячеек используют знак «&» (расположен на большинстве клавиатур на цифре «7»). При его использовании необходимо помнить, что:

  • Этот символ надо ставить в каждой точке соединения, т.е. на всех «стыках» текстовых строк также, как вы ставите несколько плюсов при сложении нескольких чисел (2+8+6+4+8)
  • Если нужно приклеить произвольный текст (даже если это всего лишь точка или пробел, не говоря уж о целом слове), то этот текст надо заключать в кавычки. В предыдущем примере с функцией СЦЕПИТЬ о кавычках заботится сам Excel — в этом же случае их надо ставить вручную.

Вот, например, как можно собрать ФИО в одну ячейку из трех с добавлением пробелов:

Сцепка текста амперсандом

Если сочетать это с функцией извлечения из текста первых букв — ЛЕВСИМВ (LEFT), то можно получить фамилию с инициалами одной формулой:

Склейка ФИО

Способ 3. Макрос для объединения ячеек без потери текста.

Имеем текст в нескольких ячейках и желание — объединить эти ячейки в одну, слив туда же их текст. Проблема в одном — кнопка Объединить и поместить в центре (Merge and Center) в Excel объединять-то ячейки умеет, а вот с текстом сложность — в живых остается только текст из верхней левой ячейки. 

Чтобы объединение ячеек происходило с объединением текста (как в таблицах Word) придется использовать макрос. Для этого откройте редактор Visual Basic  на вкладке Разработчик — Visual Basic (Developer — Visual Basic) или сочетанием клавиш Alt+F11, вставим в нашу книгу новый программный модуль (меню Insert — Module) и скопируем туда текст такого простого макроса:

Sub MergeToOneCell()
    Const sDELIM As String = " "     'символ-разделитель
    Dim rCell As Range
    Dim sMergeStr As String
    If TypeName(Selection) <> "Range" Then Exit Sub   'если выделены не ячейки - выходим
    With Selection
        For Each rCell In .Cells
            sMergeStr = sMergeStr & sDELIM & rCell.Text  'собираем текст из ячеек
        Next rCell
        Application.DisplayAlerts = False   'отключаем стандартное предупреждение о потере текста
        .Merge Across:=False                'объединяем ячейки
        Application.DisplayAlerts = True
        .Item(1).Value = Mid(sMergeStr, 1 + Len(sDELIM))    'добавляем к объед.ячейке суммарный текст
    End With
End Sub

Теперь, если выделить несколько ячеек и запустить этот макрос с помощью сочетания клавиш Alt+F8 или кнопкой Макросы на вкладке Разработчик (Developer — Macros), то Excel объединит выделенные ячейки в одну, слив туда же и текст через пробелы.

Ссылки по теме

  • Делим текст на куски
  • Объединение нескольких ячеек в одну с сохранением текста с помощью надстройки PLEX
  • Что такое макросы, как их использовать, куда вставлять код макроса на VBA

Объединение диапазона ячеек в одну или построчно с помощью кода VBA Excel. Метод Range.Merge и свойство MergeCells. Отмена объединения ячеек. Примеры.

Метод Range.Merge

Метод Merge объекта Range объединяет ячейки заданного диапазона в одну или построчно из кода VBA Excel.

Синтаксис метода:

  1. Expression — выражение, возвращающее объект Range.
  2. Across — логическое значение, определяющее характер объединения ячеек:
    • True — ячейки объединяются построчно: каждая строка заданного диапазона преобразуется в одну ячейку.
    • False — весь диапазон преобразуется в одну ячейку. False является значением по умолчанию.

Преимущество метода Range.Merge перед свойством MergeCells заключается в возможности построчного объединения ячеек заданного диапазона без использования цикла.

Свойство MergeCells

Свойство MergeCells объекта Range применяется как для объединения ячеек, так и для его отмены.

Синтаксис свойства с присвоением значения:

Expression.MergeCells = Boolean

  1. Expression — выражение, представляющее объект Range.
  2. Boolean — логическое значение, определяющее необходимость объединения ячеек или его отмены:
    • True — объединение ячеек заданного диапазона.
    • False — отмена объединения ячеек.

С помощью свойства MergeCells можно из кода VBA Excel проверять диапазон (отдельную ячейку), входит ли он (она) в объединенную ячейку (True) или нет (False). Если проверяемый диапазон окажется комбинированным, то есть содержащим объединенные и необъединенные ячейки, компилятор сгенерирует ошибку.

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

Метод Range.UnMerge

Метод UnMerge объекта Range разделяет объединенную область на отдельные ячейки из кода VBA Excel.

Синтаксис метода:

Expression — выражение, возвращающее объект Range.

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

Примеры объединения ячеек и его отмены

Пример 1
Наблюдаем, как происходит объединение ячеек при разных значениях параметра Across:

Sub Primer1()

‘Объединяем ячейки диапазона «A1:D4» построчно

   Range(«A1:D4»).Merge (True)

‘Объединяем диапазон «A5:D8» в одну ячейку

‘Across принимает значение False по умолчанию

   Range(«A5:D8»).Merge

End Sub

Не забываем, что логическое выражение True можно заменить единичкой, а False — нулем.

Пример 2
Отменяем объединение ячеек в диапазонах из первого примера:

Sub Primer2()

   Range(«A1:D8»).MergeCells = False

End Sub

Пример 3
Предполагается, что перед этим примером отменено объединение ячеек кодом из предыдущего примера.

Sub Primer3()

‘Объединяем ячейки диапазона «A1:D4»

   Range(«A1:D4»).MergeCells = 1

‘Проверяем принадлежность диапазона

‘объединенной ячейке*

   MsgBox Range(«A1:C2»).MergeCells

   MsgBox Range(«A6:C7»).MergeCells

‘Ячейки диапазона «A5:D8»

‘можно объединить и так

   Cells(5, 1).Resize(4, 4).Merge

End Sub

*Если проверяемый диапазон окажется комбинированным, VBA Excel сгенерирует ошибку.
Пример 4
Отмена объединения ячеек с помощью метода Range.UnMerge:

Sub Primer4()

‘Объединяем ячейки диапазона «A1:C4»

    Range(«A1:C4»).Merge

    MsgBox «Ячейки диапазона ««A1:C4»» объединены»

‘Смотрим адрес диапазона, входящего в объединенную ячейку

    MsgBox Range(«A2»).MergeArea.Address

‘Отменяем объединение ячеек диапазона «A1:C4»

    Range(«B3»).UnMerge  ‘или: Range(«B3»).MergeArea.UnMerge

    MsgBox «Объединение ячеек диапазона ««A1:C4»» отменено»

End Sub

Предупреждение перед объединением

Если объединяемые ячейки не являются пустыми, пред их объединением появится предупреждающее диалоговое окно с сообщением: «В объединенной ячейке сохраняется только значение из верхней левой ячейки диапазона. Остальные значения будут потеряны.»

Пример 5
Наблюдаем появление предупреждающего окна:

Sub Primer5()

‘Отменяем объединение ячеек в диапазоне «A1:D4»

   Range(«A1:D4»).MergeCells = 0

‘Заполняем ячейки диапазона текстом

   Range(«A1:D4») = «Ячейка не пустая»

‘Объединяем ячейки диапазона «A1:D4»

   Range(«A1:D4»).MergeCells = 1

‘Наблюдаем предупреждающее диалоговое окно

End Sub

Предупреждающее окно перед объединением ячеек

Чтобы избежать появление предупреждающего окна, следует использовать свойство Application.DisplayAlerts, с помощью которого можно отказаться от показа диалоговых окон при работе кода VBA Excel.

Пример 6

Sub Primer6()

‘Отменяем объединение ячеек в диапазоне «A5:D8»

   Range(«A5:D8»).MergeCells = 0

‘Заполняем ячейки диапазона «A5:D8» текстом

   Range(«A5:D8») = «Ячейка не пустая»

Application.DisplayAlerts = False

   Range(«A5:D8»).MergeCells = 1

Application.DisplayAlerts = True

End Sub

Теперь все прошло без появления диалогового окна. Главное, не забывать после объединения ячеек возвращать свойству Application.DisplayAlerts значение True.

Кстати, если во время работы VBA Excel предупреждающее окно не показывается, это не означает, что оно игнорируется. Просто программа самостоятельно принимает к действию ответное значение диалогового окна по умолчанию.

0 / 0 / 0

Регистрация: 26.10.2019

Сообщений: 4

1

Excel

Объединение текста из нескольких ячеек в одну ячейке, по всей таблице

26.10.2019, 16:38. Показов 13170. Ответов 9


Студворк — интернет-сервис помощи студентам

Есть большая таблица с которой требуется проводить разные манипуляции такие как сортировка и объединение, но для этого ее надо привести к нормальному виду. В таблице есть столбцы разбитые на 1-9 строк. Проблема со столбиком «пояснение» — надо текст с разных ячеек объединить и записать в первую ячейку строчки. Т.е. для определения ячеек с которых надо объединить текст в одну ячейку берем столбец «Дата» или «№п/п» находим запись и считаем пустые строчки до следующего значения. И так надо пройтись по всей таблице.

№ п/п Дата сумма сумма пояснение
344 20/04/2011 20,00 0,00 Комиссия по услуге:
        «Перечисление средств (руб) в
        др.банк(ЭД)», согласно
        договора, с док-та № 92 за
        20/04/2011 от суммы 300000
        RUR. НДС не облагается.
345 20/04/2011 20,00 0,00 Комиссия по услуге:
        «Перечисление средств (руб) в
        др.банк(ЭД)», согласно
        договора, с док-та № 95 за
        20/04/2011 от суммы 54000 RUR.
        НДС не облагается.

На форумах нашел два макроса, но не хватает познаний объединить их в один.
Один макрос объединяет текст из выделенных ячеек в одну, но требуется каждый раз выделять самому нужные ячейки.

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Sub Макрос1()
Dim delim As String, newdata As String
Dim rng As Range
If TypeName(Selection) <> "Range" Or Selection.Count <= 1 Then Exit Sub
delim = " "
newdata = ""
For Each rng In Selection
newdata = newdata & rng.Value & delim
Next rng
Application.DisplayAlerts = False
Selection.Merge
Selection = Left(newdata, Len(newdata) - Len(delim))
Application.DisplayAlerts = True
Selection.UnMerge
End Sub

второй макрос применяется ко всему документу, но когда указываю нужные для меня столбцы, пишется сообщение, что «Объединение ячеек приведет к потере всех значений, кроме левого верхнего»

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Public Sub Test()
Dim r As Range, c As Range, p As Range, last As Range
    
    [A:A].UnMerge ' Снимает объединение, чтобы не мешало (можно убрать)
    
    ' Вычисляет последнюю непустую ячейку (если нужно 100 - меняйте на 100)
    Set last = Range("A" & Rows.Count).End(xlUp)
 
    Set r = Range("A1", last) ' просматриваемый диапазон
    For Each c In r
        If Not IsEmpty(c) Then
            If Not p Is Nothing Then
                ' Можно вычислить высоту объединяемой группы
                ' если нужна меньше чем
                Range(p, c.Offset(-1, 0)).Merge
            End If
            Set p = c
        End If
    Next c
    
    ' Последняя (объединяется до сотой)
    If 100 - p.Row > 1 Then p.Resize(100 - p.Row).Merge
End Sub

Подскажите как его довести до ума. Спс



0



Объединение текста из двух или нескольких ячеек в одну

​Смотрите также​Здесь либо макрос,​ Фамилия+Имя+Отчество+Серия+Номер​ данные ребенка повторялось​Полная версия модифицированного кода​

Объединение данных с помощью символа «амперсанд» (&)

  1. ​ одновременно для нескольких​Теперь если нам нужно​ показателей с распределением​

  2. ​чтобы расцепить только фамилию​=СЦЕПИТЬ(A2;» «;B2), которая​Имя – ячейки в​С помощью оператора &​

  3. ​Проблема​​Fourth​​Важно:​Ячейку, которая не была​

  4. ​ автоматически, поэтому ее​Данные из нескольких ячеек​ либо UDF​Michael_S​​ 1 раз, и​​ макроса:​

Объединение данных с помощью функции СЦЕП

  1. ​ выделенных строк.​ одновременно объединять диапазоны​ по кварталам.​

  2. ​ – формула: =ПРАВСИМВ(C4;ПОИСК(«​​ объединяет текстовые значения​​ этой колонке содержат​

  3. ​ можно объединять текстовые​Описание​

    ​Pine​ В Excel 2016, Excel Mobile​ создана путем объединения,​ текст может содержать​ можно объединить в​

  4. ​Nic70y​: Вот если названия​ в нужном столбце​Sub JoinEmpty()​​​​ кварталов, чтобы избавиться​

support.office.com

Объединение и отмена объединения ячеек

​Нам необходимо объединить ячейки​​ «;C4;1)+1)​ в одну строку.​ текстовые данные полученные​ элементы, не прибегая​Кавычки отображаются в строке​32​ и Excel Online​ невозможно разделить. Если​ неточности и грамматические​ одну с помощью​: вот это уточните​ листов и предметов​ (с предметом) стояла​Dim i As​Что если в нашей​ от пустых ячеек,​ на первой строке​Фактически функция СЦЕПИТЬ устарела,​ Однако на практике​ из базы картотек​

​ к функции.​ результата.​Формула​ эта функция заменена​ вы ищете сведения​ ошибки. Для нас​

Объединение ячеек

  1. ​ символа «амперсанд» (&)​

  2. ​ и желательно в​​ в первой строке​ оценка. Пример прикрепляю.​

    ​ Long​​ таблице потребуется выполнить​ выделите диапазон B1:L2.​ таким образом, чтобы​ но все еще​ мы не рекомендуем​ кадрового отдела.​Например, =A1 & B1​Используйте точку с запятой​Описание​ функцией СЦЕП. Функция​ о том, как​ важно, чтобы эта​

Отмена объединения ячеек

  1. ​ или функции СЦЕП.​ файле (пару листов​​ сделать одинаковыми, то​Я пробовал свести​​Dim j As​

  2. ​ аналогичное объединение пустых​​ После чего запустите​

​ ячейка с названием​​ доступна пользователям в​

  • ​ использовать функцию СЦЕПИТЬ,​Фамилия – в данном​ возвращает то же​ для разделения текстовых​=СЦЕПИТЬ(«Популяция рек для «;A2;»​ СЦЕПИТЬ пока еще​ распределить данные из​ статья была вам​Выделите ячейку, в которую​ достаточно) и как​

  • ​ можно так​ все данные в​ Long​ ячеек сразу в​ макрос: «РАЗРАБОТЧИК»-«Код»-«Макросы»-«JoinEmpty»-«Выполнить». Ячейки​ квартала была объединена​ новых версиях программы​​ а в место​​ столбце находиться только​

support.office.com

Функция СЦЕПИТЬ в Excel, включая примеры

​ значение, что и​​ элементов. Например: Excel​ «;A3;» составляет «;A4;»​ доступна для обратной​ ячейки по нескольким​ полезна. Просим вас​ вы хотите вставить​ должен выглядеть результат.​или макросом​ одну таблицу и​For j =​ нескольких строках –​ объединяться в соответствии​ с пустыми ячейками​ Excel.​ нее просто применять​ фамилии сотрудников.​ =CONCATENATE(A1,B1). Во многих​ отобразит результат функции​ на километр.»)​ совместимости, однако рекомендуем​

​ ячейкам, см. статью​​ уделить пару секунд​​ объединенные данные.​Fleiros​Nic70y​ сделать сводную таблицу,​ 1 To Selection.Rows.Count​

​ одновременно? Для этого​​ с продолжительностью каждого​ находящиеся справа от​Макросы незаменимы при форматировании​ в формулах оператор​В третьем столбце «Имя​ случаях воспользоваться оператором​ =СЦЕПИТЬ («Привет, «»мир!»)​Создает предложение, объединяя данные​ использовать вместо нее​ Распределение содержимого ячейки​ и сообщить, помогла​Введите = (знак равенства)​

​: Спасибо большое за​​: Тот же принцип​

​ но она у​

  • ​For i =​ нужно добавить несколько​ квартала, как на​

  • ​ нее. И так​

​ и изменении структуры​

​ &, так как​

​ + Фамилия» необходимо​​ амперсанда проще и​

​ как «Привет,»мир!» с​ в столбце А​ функцию СЦЕП. В​ на соседние столбцы.​ ли она вам,​

​ и выберите первую​​ терпение. Прикрепляю файл​

​200?’200px’:»+(this.scrollHeight+5)+’px’);»>ДВССЫЛ​ меня не получилась​ 1 To Selection.Columns.Count​ строк в код​

Примеры

​ рисунке:​ для каждого названия​ в больших таблицах​ она имеет ряд​ объединить имя и​ быстрее, чем создавать​ лишней кавычкой, так​

​ с остальным текстом.​

​ последующих версиях Excel​

​Ячейку, полученную путем объединения,​

​ с помощью кнопок​

​ ячейку, которую нужно​

​ с исходными данными​

​Fleiros​

​ в нужном виде.​

​If Selection.Cells(j, i)​

​ нашего макроса. Но​

​В данном коде цикл​ квартала.​ Excel. В данном​

​ своих недостатков.​ фамилию каждого сотрудника​ строки с помощью​ как пропущена запятая​ Результат: «Популяция рек​ функция СЦЕПИТЬ может​ можно снова разделить​

​ внизу страницы. Для​

​ объединить.​ и желаемым результатом.​: Спасибо.​ Какой то хаос​ = «» Then​

​ сначала подготовим исходную​

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

​ между текстовыми аргументами.​

​ для вида речная​ быть недоступна.​ на отдельные ячейки.​ удобства также приводим​Введите символ​P.S. по поводу​Я к сожалению​ из кучи «вложений»​

​ActiveSheet.Range(Selection.Cells(j, i -​ таблицу.​

​ ячейкам первой строки​ вручную может потребовать​ как с помощью​3 главных недостатка функции​​ в сводных таблицах​​См. дополнительные сведения об​Числа не нужно заключать​ форель составляет 32​

Распространенные неполадки

​Синтаксис:​

​ Если вы не​

​ ссылку на оригинал​&​

​ количества оценок имеется​ неверно сформулировал вопрос​ вышел. К сожалению​ 1), Selection.Cells(j, i)).Merge​Допустим нам для последних​ выделенного диапазона, слева​ много времени и​ макроса можно быстро​ СЦЕПИТЬ по сравнению​

​ и отчетах, сформированных​ использовании операторов вычислений.​

​ в кавычки.​ на километр».​

​СЦЕПИТЬ(текст1;[текст2];…)​ помните, где находятся​ (на английском языке).​и пробел, заключенный​ ввиду то, что​ изначально,​ не разобрался как​End If​ трех отделов необходимо​

  • ​ на право. Проверяется​ сил, особенно при​ и одновременно объединять​ с оператором &:​ программой Excel.​

  • ​Для объединения и форматирования​​Слова расположены впритык друг​​=СЦЕПИТЬ(В2;» «;C2)​Ниже приведены примеры.​ объединенные ячейки, используйте​Не удается разбить отдельные​

​ в кавычки.​ у одного может​

​UPD: Дети не​ со сводными таблицами​​Next​​ разбить данные на​ каждая из них​

Рекомендации

​ обработке несколько таких​

​ все пустые ячейки​

​Ограниченное максимальное количество объединяемых​Для этого необходимо попарно​

​ строк используйте функцию​ к другу.​Объединяет строку в ячейке​=СЦЕПИТЬ(«Популяция рек для «;A2;»​

​ команду​ ячейки, но можно​Выберите следующую ячейку, которую​ быть только по​ всегда идут в​ работать. Возможно есть​Next​ 2 полугодия. Исходный​ на наличие значений.​

​ подобных бюджетов. Да​ в строках таблицы​

​ значений ячеек до​ объедини тексты из​ ТЕКСТ.​

​Если не поместить пробелы​ В2, пробел и​ «;A3;» составляет «;A4;»​Найти​ отобразить его как​

​ нужно объединить, и​ русскому языку оценка,​ одном порядке (как​ более удобное решение,​Selection.HorizontalAlignment = xlVAlignCenter​ вид таблицы будет​

​ Если проверяемая ячейка​

​ и количество объединяемых​

support.office.com

Лучшая альтернатива функции СЦЕПИТЬ и объединить текст в Excel

​ Excel.​ 255.​ ячеек столбцов таблицы​Функция ТЕКСТ преобразует числовое​ между текстовыми элементами,​ значение в ячейке​ на километр.»)​для их поиска.​ если бы ячейки​ нажмите клавишу ВВОД.​ у другого по​ в примере), а​ надеюсь на Вашу​End Sub​

Как сцепить два текста в один с помощью и без функции Excel?

​ выглядеть следующим образом:​ не содержит никаких​ ячеек не всегда​

  1. ​У нас иметься таблица​Функция объединяет только текстовые​ в общие строки.​ значение в текст​ в строке результата​
  2. ​ С2. Результат: «Виталий​=СЦЕПИТЬ(В2;» «;C2)​Примечание:​

​ была разделена, объединение​ Пример формулы:​ 10 предметам оценки.​ так же в​ помощь. Заранее спасибо.​Теперь, нам осталось только​Если нам нужно изменить​ значений (пуста), макрос​

объединить имя и фамилию.

​ одинаковое – а​ бюджета для разных​ значения, а оператор​На рисунке проиллюстрированный пример​

​ и объединяет числа​ они будут отображаться​ Токарев».​Имя аргумента​ Мы стараемся как можно​ ячеек над ней.​=A2&» «&B2​Внутри одного предмета​ одной вкладке может​

пример решения задачи.

​UPD: Дети не​ лишь выделить диапазон​ так, чтобы его​ объединяет ее с​ это уже требует​ отделов. Суммы распределены​ & объединит любые​ решения данной задачи.​ с текстом или​ слитно. Добавьте пробелы​=СЦЕПИТЬ(С2;», «;В2)​Описание​ оперативнее обеспечивать вас​Выделите ячейки для объединения.​.​

соединить любые текстовые значения.

​ только 1 оценка​ быть 200 строк,​ всегда идут в​ B1:L12 и запустить​
​ можно было применить​ предыдущей ячейкой. А​ дополнительного внимания от​ по месяцам. Итоговые​ значения ячеек.​ Для этой цели​ символами.​ в формулу с​Объединяет текст в ячейке​текст1​ актуальными справочными материалами​Выберите​

​Выделите ячейку, в которую​

​ на ученика.​ а в другой​ одном порядке (как​

  1. ​ новую версию макроса:​ одновременно для нескольких​ если же проверяемая​
  2. ​ пользователя, иначе будут​ суммы по каждому​Функция требует немного больше​ в примере должен​
  3. ​Например если в ячейке​ функцией СЦЕПИТЬ. Это​ C2, строку, состоящую​    (обязательный)​ на вашем языке.​Объединить и поместить в​ вы хотите вставить​Nic70y​ 800.​ в примере), а​

​Читайте также: макрос для​ выделенных строк таблицы,​ ячейка содержит какое-то​ ошибки в структуре​ отделу взяты из​ затрат времени и​ использоваться оператор «&»​ A1 содержится номер​ можно сделать двумя​ из запятой и​Первый элемент для объединения.​ Эта страница переведена​

  • ​ центре.​ объединенные данные.​: вариант из 1​
  • ​В результате нужно​ так же в​ объединения пустых ячеек​

функция РАСЦЕПИТЬ.

​ тогда сначала кода​ значение, то макрос​ отчетов. Рационально написать​ других листов рабочей​ ресурсов как у​

exceltable.com

Макрос для объединения пустых ячеек в строках таблицы Excel

​ (END вместо оператора​ 23,5, чтобы отформатировать​ способами.​ пробела, и значение​ Это может быть​ автоматически, поэтому ее​Важно:​Введите выражение​ 000 000 000​ вывести всех детей(без​ одной вкладке может​

Как объединить пустые ячейки в строках с помощью макроса

​ в столбцах таблицы​ продекларируем новую переменную:​ пропускает ее и​ макрос для автоматического​ книги Excel, где​ программы Excel (в​ «+»), который позволяет​ числа в виде​Добавьте двойные кавычки с​ в ячейке B2.​ текстовое значение, число​ текст может содержать​  В объединенной ячейке​= СЦЕП(​ формул​ повторений) и их​ быть 200 строк,​ Excel​Dim j As Long​ переходит к проверке​ решения поставленной задачи.​ указаны по ним​ процессе вычислений с​ объединять значения ячеек​ денежное значение можно​ пробелом между ними​ Результат: «Виталий Токарев».​ или ссылка на​

Бюджет по отделам.

​ неточности и грамматические​ отображается содержимое только​.​

​Fleiros​ результаты. Так же​ а в другой​Внимание! Если первая ячейка​Теперь, перед циклом, который​ следующей.​Откроем редактор Visual Basic​ данные на все​ использованием сложных формул),​ в формулах:​

​ использовать следующую формулу:​ (» «). Например:​=СЦЕПИТЬ(B3;» & «;C3)​ ячейку.​ ошибки. Для нас​ одной ячейки (верхней​Выберите первую ячейку, которую​: Спасибо, буду разбираться​ количество оценок по​ 800.​ (в верхнем левом​ проходит по всем​В конце кода выравниваем​ (ALT+F11):​ месяца текущего года.​ так и у​

​Как показано выше на​=ТЕКСТ(A1;»0,00 ₽»)​

редактор макросов.

​ =СЦЕПИТЬ(«Привет,»; » «;​Объединяет строку в ячейке​текст2,…​ важно, чтобы эта​ левой ячейки для​

​ нужно объединить.​
​ с формулами​ предметам у всех​
​В результате нужно​ углу) выделенного диапазона​
​ ячейкам выделенной строки​ по центру весь​
​И вставим новый модуль​ Поэтому автор общей​
​ пользователя (в процессе​
​ рисунке с помощью​
​Результат: 23,5 ₽​
​ "мир!").​
Код JoinEmpty.

​ B3, строку, состоящую​    (необязательные)​ статья была вам​ языков с направлением​Для разделения объединяемых ячеек​DOK2014​ может быть разное.​ вывести всех детей(без​ – пуста, то​ добавим новую строку​ текст, который содержится​

Пример.

​ с помощью инструмента​ таблицы бюджета распределил​ ввода функции в​ символа «&» можно​Одна из самых популярных​Добавьте пробел после​ из пробела, амперсанда​Дополнительные текстовые элементы для​ полезна. Просим вас​ письма слева направо​ используйте запятые, а​: обрабатывал подобные файлы,​ Столбец «№» -​ повторений) и их​ она будет объедена​ с кодом цикла​ в выделенном диапазоне​ в редакторе: «Insert»-«Module».​

​ названия заголовков не​ строку формул).​ соединить любые текстовые​ операций в Exel​текстового​ и еще одного​

​ объединения. Можно указать​

​ уделить пару секунд​ или правой верхней​ для добавления пробелов,​ на формулах -​ это просто номер​ результаты. Так же​ со смежной ячейкой​ для перехода по​ задав соответствующее свойство​ После запишем в​ только по месяцам,​Интересный факт! В Excel​ значения из разных​ по работе с​

​аргумента. Например: =СЦЕПИТЬ(«Привет,​

Как объединить все пустые ячейки во всех строках таблицы Excel

​ пробела, и значение​ до 255 элементов и​ и сообщить, помогла​ ячейки для языков​ запятых и другого​ тормозит.​ по порядку для​ количество оценок по​ слева от выделенного​ строкам выделенного диапазона​ в строке:​

​ модуль код VBA-макроса:​ а и по​ нет обратной функции​ ячеек без использования​ текстом – это​ «; «мир!»). К​

Исходный бюджет 2.

​ в ячейке C3.​ до 8 192 символов.​ ли она вам,​ с направлением письма​ текста — кавычки.​Оптимально: на отдельный​ каждой вкладки, столбцы​

​ предметам у всех​

​ диапазона.​ ячеек:​Selection.HorizontalAlignment = xlHAlignCenter​Sub JoinEmpty()​ кварталам. Соответственно название​ РАСЦЕПИТЬ и нет​ функции: =СЦЕПИТЬ(). В​ объединение текстовых строк.​

​ строке «Привет,» добавлен​ Результат: Fourth &​

​Чтобы использовать эти примеры​ с помощью кнопок​ справа налево). Данные​

​Введите закрывающую скобку в​

​ лист «База данных»​ «Код1» и «Код2″​ может быть разное.​Fleiros​For j = 1​

​Обратите внимание, что в​

​Dim i As​ квартала находиться в​

​ специального символа оператора.​
​ этом примере объединены​ Например, объединение нескольких​
​ пробел.​ Pine.​
​ в Excel, скопируйте​ внизу страницы. Для​
​ в других объединенных​ конце формулы и​
​ копируются значения из​ не являются уникальными​
​ Столбец "№" -​: Добрый день, подскажите​
​ To Selection.Rows.Count​
​ этой версии кода​
​ Long​
​ столбце первого месяца​
​ Для решения такой​

​ значения ячеек A2​ слов в одну​Вместо ожидаемого результата отображается​=B3 & » &​

Все пустые ячейки объеденены.

​ данные из приведенной​ удобства также приводим​ ячейках удаляются.​ нажмите клавишу ВВОД.​

​ вкладок, далее -​ и могут повторяться.​ это просто номер​ пожалуйста как можно​Так же не забудем​ если мы выделим​For i =​ с которого начинается​

exceltable.com

Объединение строк по повторяющимся критериям в одну строку (Формулы/Formulas)

​ задачи применяются формулы​​ и B2 с​ строку. На практике​ значение ошибки #ИМЯ?.​
​ » & C3​ ниже таблицы и​ ссылку на оригинал​Нажмите стрелку вниз рядом​ Пример формулы:​ сводная таблица​ Уникальность каждой строки​ по порядку для​ решить данную задачу.​ добавить конец нового​ более одной строки​ 1 To Selection.Columns.Count​ этот же квартал.​
​ с комбинациями текстовых​ добавленным между ними​ в процессе рутинной​Ошибка #ИМЯ? обычно означает,​Объединяет те же элементы,​ вставьте их на​ (на английском языке).​ с кнопкой​=CONCAT(A2, » Семья»)​Fleiros​ в результате необходимо​ каждой вкладки, столбцы​Есть файл с​ цикла:​ содержащие пустые ячейки,​If Selection.Cells(1, i)​
​ За исключением первого​ функций. Например маркером​ символом пробела (указанный​ работы с Excel​ что для​ что и в​ новый лист в​Используйте функцию​Объединить и поместить в​
​.​: Подскажите пожалуйста как​ считать несовпадение по​ «Код1» и «Код2″​ множеством вкладок, на​Next​ то после запуска​ = «» Then​ квартала так как​ для расцепления текста​ в формуле между​ часто приходиться объединять​текстового​ предыдущем примере, но​ ячейку A1.​СЦЕПИТЬ​ центре​Примечание:​ правильно сводную таблицу​

​ 5 ячейкам: это​​ не являются уникальными​ каждой из которых​Во всех экземплярах объекта​ макроса будут объединены​ActiveSheet.Range(Selection.Cells(1, i -​
​ год уже не​

​ послужит символ пробела​​ кавычками как текстовое​​ Имена и Фамилии​

​аргумента не хватает​​ с помощью оператора​
​Данные​, относящуюся к текстовым​.​
​ Мы стараемся как можно​ делать? я пробовал​ Фамилия+Имя+Отчество+Серия+Номер​ и могут повторяться.​ данные об учениках​ Cells, для второго​ ячейки только в​ 1), Selection.Cells(1, i)).Merge​ полный по состоянию​
​ « » ,​ значение).​ сотрудников в одну​ кавычек.​&​вида​ функциям, для объединения​Выберите​ оперативнее обеспечивать вас​ но не получилось.​Michael_S​ Уникальность каждой строки​ и их оценках​ аргумента вместо числа​ первой строке. Далее​End If​ на дату формирования​ а дальше:​Для объединения текстов в​

​ ячейку.​​Действие​(амперсанд) вместо функции​Виталий​
​ двух или нескольких​Отменить объединение ячеек.​

​ актуальными справочными материалами​​ Все в одну​: да на 11​ в результате необходимо​ по конкретному предмету.​ 1 введем переменную​

​ рассмотрим, как модифицировать​​Next​ отчета. Как показано​чтобы расцепить только имя​ одну строку программа​
​В примере показанным на​Описание​ СЦЕПИТЬ. Результат: Fourth​Токарев​ текстовых строк в​Важно:​ на вашем языке.​ колонку с вложениями​
​ предметов… 900 ДВССЫЛ​ считать несовпадение по​ Нужно все данные​

​ j:​​ наш макрос, чтобы​Selection.HorizontalAlignment = xlVAlignCenter​ ниже на рисунке:​

​ используем формулу: =ЛЕВСИМВ(C2;ПОИСК(«​​ Excel предлагает встроенную​ рисунке таблица содержит​:)

​Вместо функции СЦЕПИТЬ используйте​​ & Pine.​речная форель​ одну.​
​ ​ Эта страница переведена​ сводится​ будет сильно тормозить.​ 5 ячейкам: это​

​ объединить так, чтобы​​Selection.Cells(i,j)​ он был применим​End Sub​Формат бюджета для ежемесячных​ «;C2;1))​ функцию​ первые два столбца:​

excelworld.ru

​ знак & (амперсанд).​

Понравилась статья? Поделить с друзьями:
  • Excel макрос вес прописью
  • Excel макрос ввода даты
  • Excel макрос ввод данных в ячейку
  • Excel макрос ввести в ячейку
  • Excel макрос в модуль листа