Как объединить строки в столбце в одну ячейку в excel?
Например,
A1:I
A2:am
A3:a
A4:boy
Я хочу объединить их всех в одну ячейку "Ямабой"
В этом примере показано, что 4 ячейки сливаются в 1 ячейку, но у меня много ячеек (более 100), я не могу их вводить один за другим, используя A1 & A2 & A3 & A4
, что я могу сделать?
Ответы
Ответ 1
Представляю вам свою функцию 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
Ответ 2
Если вы предпочитаете делать это без VBA, вы можете попробовать следующее:
- Введите ваши данные в ячейки A1: A999 (или такие)
- Установить ячейку B1 в "= A1"
- Установите ячейку B2 на "= B1 & A2"
- Скопировать ячейку B2 до B999 (например, путем копирования B2, выбора ячеек B3: B99 и вставки)
Теперь ячейка B999 будет содержать конкатенированную текстовую строку, которую вы ищете.
Ответ 3
Внутри CONCATENATE
вы можете использовать TRANSPOSE
, если вы развернете его (F9), затем удалите окружающие скобки {}
, такие как this рекомендует
=CONCATENATE(TRANSPOSE(B2:B19))
становится
=CONCATENATE("Oh ","combining ", "a " ...)
![CONCATENATE(TRANSPOSE(B2:B19))]()
Возможно, вам придется добавить свой собственный разделитель в конец, скажем, создать столбец C и перенести этот столбец.
=B1&" "
=B2&" "
=B3&" "
Ответ 4
В простых случаях вы можете использовать следующий метод, который не требует создания функции или копирования кода в несколько ячеек:
Где A1: A9 - ячейки, которые вы хотели бы объединить.
- Не выходя из ячейки нажмите
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, находясь на панели редактора ячеек (обычно это можно найти над электронной таблицей)
Ответ 5
Используйте 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, но выглядит ужасно. Более элегантным решением было бы скрыть это в функции JoinXL
VBA.
Ответ 6
Для тех, у кого есть Excel 2016 (и я полагаю, следующие версии), теперь есть непосредственно функция CONCAT, которая заменит функцию CONCATENATE.
Итак, правильный способ сделать это в Excel 2016:
=CONCAT(A1:A4)
который будет производить:
Я мальчик
Для пользователей старых версий Excel другие ответы актуальны.
Ответ 7
Для Excel 2011 на Mac это другое. Я сделал это как трехэтапный процесс.
- Создать столбец значений в столбце A.
- В столбце B, справа от первой ячейки, создайте правило, которое использует функцию concatenate для значения столбца и ",". Например, если предположить, что A1 является первой строкой, формула для B1 равна
=B1
. Для следующей строки для строки N формула =Concatenate(",",A2)
. Вы в конечном итоге:
QA
,Sekuli
,Testing
,Applitools
,Visual Testing
,Test Automation
,Selenium
- В столбце C создайте формулу, которая объединяет все предыдущие значения. Потому что это добавка, вы получите все в конце. Формула для ячейки C1 равна
=B1
. Для всех остальных строк в N формула =Concatenate(C1,B2)
. И вы получаете:
QA,Sekuli
QA,Sekuli,Testing
QA,Sekuli,Testing,Applitools
QA,Sekuli,Testing,Applitools,Visual Testing
QA,Sekuli,Testing,Applitools,Visual Testing,Test Automation
QA,Sekuli,Testing,Applitools,Visual Testing,Test Automation,Selenium
Последняя ячейка списка будет тем, что вы хотите. Это совместимо с Excel на Windows или Mac.
Ответ 8
Я использую метод CONCATENATE
, чтобы принимать значения столбца и кавычки вокруг них с столбцами между ними, чтобы быстро заполнить предложение WHERE IN ()
инструкции SQL.
Я всегда просто набираю =CONCATENATE("'",B2,"'",",")
, а затем выбираю это и перетаскиваю его, создавая =CONCATENATE("'",B3,"'",",")
, =CONCATENATE("'",B4,"'",",")
и т.д., затем выделяет весь столбец, копирует в текстовый редактор и в случае необходимости вставляет обратно, таким образом снимая разделение строк. Это работает, но опять же, как раз в одно время, это нехорошее решение для тех, кто нуждается в этом все время.
Ответ 9
Я знаю, что это действительно очень старый вопрос, но я пытался сделать то же самое, и я наткнулся на новую формулу в Excel под названием "TEXTJOIN".
Для вопроса, следующая формула решает проблему
=TEXTJOIN("",TRUE,(a1:a4))
Подпись "TEXTJOIN" объясняется как TEXTJOIN (разделитель, ignore_empty, text1, [text2], [text3],...)