2016-09-19 29 views
1

Я пытаюсь соединить текст из ячеек по строке, когда некоторые ячейки пусты. Я также хочу иметь запятые, разделяющие текст из каждой ячейки, но не могу понять, как вводить только запятые, когда есть данные в ячейке.Строковый текст с пустыми ячейками

Я попытался использовать варианты конкатенации и наложения текста, используя A1 & B1 & C1, но ничего не возвращает данные в формате, который я хочу.

Есть ли комбинация вложенных формул, которые я могу использовать, которые возвратят данные в формате, который я хочу?

+0

Какую версию Excel вы используете? В 2016 году вы можете сделать ['TextJoin()'] (https://support.office.com/en-us/article/TEXTJOIN-function-357b449a-ec91-49d0-80c3-0e8fc845691c): '= TEXTJOIN (" , ", TRUE, [range])' – BruceWayne

+0

Я использую Excel 2013, поэтому формула textjoin недоступна для меня. –

ответ

0

Формула ниже могла бы сделать трюк. Конкатенация вали. Обрезка удалит пробелы с концов, а заменитель заменит пространство запятой (пробелом).

= ЗАМЕНИТЬ (TRIM (A1 & "" & B1 & "" & C1 & "" & D1), "", "")

Редактировать из приведенных ниже комментариев - вы можете обновить пробелы между кавычки - любой символ, который не отображается в ваших ячейках. Вам просто нужно подставить формулу для соответствия. Если вы не используете | характер, например:

= ПОДСТАВИТЬ (TRIM (А1 & "|" & В1 & "|" & С1 & "|" & D1), "|", "")

+0

Я пробовал эту формулу, но некоторые мои данные имеют более одного слова на ячейку, и эта формула вставляет запятые, где есть пространство внутри каждой ячейки. Любые исправления для этого? –

+0

Вместо «" между амперсандами вы можете использовать любой символ, который не отображается в тексте, - просто замените пробелы. Также замените пространство во втором и последнем сегментах. Например, если вы не используете символы \ или *, ваша формула может выглядеть так: = ЗАМЕСТИТЕЛЬ (TRIM (A1 & "\" & B1 & "\" & C1 & "\" & D1), "\", ",") или = ЗАМЕНА (TRIM (A1 & "*" & B1 & "*" & C1 & "*" & D1), "*", ",") – BamAlmighty

0

Вот решение VBA Я имел в своем распоряжении более новых версий:

Public Function JOINCELLS(ByVal ref As Range) As String 
Dim c  As Range 
For Each c In ref 
    If Len(c) > 0 Then 
     JOINCELLS = JOINCELLS & c & ", " 
    End If 
Next 
JOINCELLS = Left(JOINCELLS, Len(JOINCELLS) - 2) 
End Function 

Тогда это просто =JOINCELLS(A1:D1).

Смежные вопросы