Подтвердить что ты не робот

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

Например,

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

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

4b9b3361

Ответ 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

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

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

    =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, находясь на панели редактора ячеек (обычно это можно найти над электронной таблицей)

Ответ 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
  1. В столбце 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],...)