нужно объединить 3 столбца в Excel - PullRequest
0 голосов
/ 20 ноября 2018

У меня есть 3 столбца A, B, C, и мне нужно объединить 3 столбца, и я применил формула =A1&","&B1&","&C1 вывод пришел в виде столбца E, мне нужен вывод в виде столбца D.

screenshot of excel

Ответы [ 4 ]

0 голосов
/ 20 ноября 2018
'Put this code in module and use formula concmulti and select the range 
Function concmulti(slt As Range) As String
Dim str As String
Dim cell As Range
For Each cell In slt
str = str & cell.Value & ", "
Next cell
concmulti = str
End Function
0 голосов
/ 20 ноября 2018

Введите эту формулу в E1:

=CONCATENATE(A1, IF(AND(B1<>"", A1<>""), ",", ""), B1,
    IF(AND(OR(A1<>"", B1<>""), C1<>""), ",", ""), C1)

Использование TEXTJOIN может быть более понятным вариантом, но доступно только в более поздних версиях Excel.

0 голосов
/ 20 ноября 2018

Если в ячейках нет пробелов , то в D1 введите:

=SUBSTITUTE(TRIM(A1 & " " & B1 & " " & C1)," ",",")

и скопируйте вниз:

enter image description here

0 голосов
/ 20 ноября 2018

Следующая формула даст желаемый результат:

=TEXTJOIN(",",TRUE,A1:C1)

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

Поскольку в комментариях упоминается, что TEXTJOIN доступен только для подписчиков Office 365, возможной альтернативой будет создание UDF, как показано ниже,это позволит вам использовать приведенную выше формулу без подписки на Office 365:

Function TEXTJOIN(delimiter As String, ignore_empty As Boolean, rng As Range) As String
Dim compiled As String
For Each cell In rng
    If ignore_empty And IsEmpty(cell.Value) Then
        'nothing
    Else
        compiled = compiled + IIf(compiled = "", "", delimiter) + CStr(cell.Value)
    End If
Next
TEXTJOIN = compiled
End Function
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...