it-roy-ru.com

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

Например

A1:I
A2:am
A3:a
A4:boy 

Я хочу объединить их всех в одну ячейку "Iamaboy"
В этом примере показано, как 4 ячейки объединяются в 1 ячейку, однако у меня много ячеек (более 100), я не могу набрать их одну за другой с помощью A1 & A2 & A3 & A4, что я могу сделать?

76
red23jordan

Представляю вам свою функцию ConcatenateRange VBA (спасибо Жану за советы по именованию!). Он займет диапазон ячеек (любое измерение, любое направление и т.д.) И объединит их в одну строку. В качестве необязательного третьего параметра вы можете добавить разделитель (например, пробел или разделенные запятыми).

В этом случае вы должны написать это, чтобы использовать его:

=ConcatenateRange(A1:A4)
Function ConcatenateRange(ByVal cell_range As range, _
                    Optional ByVal separator As String) As String

Dim newString As String
Dim cell As Variant

For Each cell in cell_range
    If Len(cell) <> 0 Then
        newString = newString & (separator & cell))
    End if
Next

If Len(newString) <> 0 Then
    newString = Right$(newString, (Len(newString) - Len(separator)))
End If

ConcatenateRange = newString

End Function
86
aevanko

Если вы предпочитаете делать это без VBA, вы можете попробовать следующее:

  1. Храните свои данные в ячейках A1: A999 (или что-то подобное)
  2. Установите для ячейки B1 значение "= A1"
  3. Установите ячейку B2 на "= B1 & A2"
  4. Скопируйте ячейку B2 до B999 (например, скопировав B2, выбрав ячейки B3: B99 и вставив)

Ячейка B999 теперь будет содержать объединенную текстовую строку, которую вы ищете.

145
Mischinab

Внутри CONCATENATE вы можете использовать TRANSPOSE, если его развернуть (F9) затем удалите окружающие скобки {} наподобие this рекомендует

=CONCATENATE(TRANSPOSE(B2:B19))

Становится

=CONCATENATE("Oh ","combining ", "a " ...)

CONCATENATE(TRANSPOSE(B2:B19))

Вам может понадобиться добавить собственный разделитель в конце, скажем, создать столбец C и транспонировать этот столбец.

=B1&" "
=B2&" "
=B3&" "
39
KCD

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

  1. В любой ячейке напишите следующий код

    =Transpose(A1:A9) 
    

Где A1: A9 - ячейки, которые вы хотели бы объединить.

  1. Не выходя из ячейки, нажмите F9

После этого ячейка будет содержать строку:

={A1,A2,A3,A4,A5,A6,A7,A8,A9}

Источник: http://www.get-digital-help.com/2011/02/09/concatenate-a-cell-range-without-vba-in-Excel/

Обновление: одна часть может быть неоднозначной. Не выходить из ячейки означает, что ваша ячейка находится в режиме редактора. В качестве альтернативы вы можете нажать F9, находясь в панели редактора ячеек (обычно это можно найти над таблицей)

24
y.selivonchyk

Используйте уже существующую функцию VBA Join. Функции VBA не отображаются в Excel, поэтому я обертываю Join в пользовательскую функцию, которая предоставляет ее функциональность. Самая простая форма:

Function JoinXL(arr As Variant, Optional delimiter As String = " ")
    'arr must be a one-dimensional array.
    JoinXL = Join(arr, delimiter)
End Function

Пример использования:

=JoinXL(TRANSPOSE(A1:A4)," ") 

вводится как формула массива (используя Ctrl-Shift-Enter).

enter image description here


Теперь JoinXL принимает в качестве входных данных только одномерные массивы. В Excel диапазоны возвращают двумерные массивы. В приведенном выше примере TRANSPOSE преобразует двумерный массив 4 × 1 в одномерный массив из 4 элементов (это задокументированное поведение TRANSPOSE, когда он подается в виде двумерного массива из одной колонки).

Для горизонтального диапазона вам нужно сделать двойное TRANSPOSE:

=JoinXL(TRANSPOSE(TRANSPOSE(A1:D1)))

Внутреннее TRANSPOSE преобразует двумерный массив 1 × 4 в двумерный массив 4 × 1, который внешний TRANSPOSE преобразует в ожидаемый одномерный массив из 4 элементов.

enter image description here

Такое использование TRANSPOSE является хорошо известным способом преобразования 2D-массивов в 1D-массивы в Excel, но выглядит ужасно. Более элегантным решением было бы скрыть это в функции VBA JoinXL.

13
Jean-François Corbett

Для тех, у кого есть Excel 2016 (и, я полагаю, следующие версии), теперь есть функция CONCAT , которая заменит функцию CONCATENATE .

Итак, правильный способ сделать это в Excel 2016:

=CONCAT(A1:A4)

который будет производить:

Я мальчик

Для пользователей старых версий Excel другие ответы актуальны.

9
gvo

Для Excel 2011 на Mac все по-другому. Я сделал это в три этапа.

  1. Создайте столбец значений в столбце А.
  2. В столбце B справа от первой ячейки создайте правило, которое использует функцию сцепления для значения столбца и ",". Например, предполагая, что A1 - первая строка, формула для B1 - =B1. Для следующей строки в строке N формула =Concatenate(",",A2). Вы заканчиваете с:
 QA 
, Sekuli 
, Тестирование 
, Applitools 
, Визуальное тестирование 
, Автоматизация тестирования 
, Селен 
  1. В столбце C создайте формулу, которая объединяет все предыдущие значения. Потому что это добавка, вы получите все в конце. Формула для ячейки C1: =B1. Для всех остальных строк N, формула =Concatenate(C1,B2). И вы получите:
 QA, Sekuli 
 QA, Sekuli, Тестирование 
 QA, Sekuli, Testing, Applitools 
 QA, Sekuli, Тестирование, Applitools, Визуальное тестирование 
 QA, Sekuli, Тестирование, Applitools, Визуальное тестирование, Автоматизация тестирования 
 QA, Sekuli, Тестирование, Applitools, Визуальное тестирование, Автоматизация тестирования, Selenium 

Последняя ячейка списка будет тем, что вы хотите. Это совместимо с Excel на Windows или Mac.

3
Chris Riley

Я использую метод CONCATENATE, чтобы взять значения столбца и заключить их в кавычки с промежуточными столбцами, чтобы быстро заполнить предложение WHERE IN () оператора SQL.

Я всегда просто набираю =CONCATENATE("'",B2,"'",","), а затем выбираю его и перетаскиваю его вниз, что создает =CONCATENATE("'",B3,"'",","), =CONCATENATE("'",B4,"'",",") и т.д., Затем выделяю весь этот столбец, копирую вставку в текстовый редактор и вставляю обратно, если необходимо, таким образом удаляя разделение строк. Это работает, но опять же, как разовая сделка, это не очень хорошее решение для тех, кому это нужно постоянно.

2
GoldPaintedLemons