Объединение данных (но игнорирование пустых ячеек)

699
Nicky

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

=J3&", "&K3&", "&L3&", "&M3 

Когда все мои ячейки содержат текст, результат именно то, что я хочу.

Однако в некоторых случаях существуют ячейки без данных. На данный момент моя формула просто возвращает «,,,» если в ячейках нет данных. Есть ли способ переписать формулу, чтобы она игнорировала ячейки, которые не содержат никаких данных?

2

5 ответов на вопрос

3
Scott Craner

С Office 365 Excel это становится проще.

Office 365 Excel представил TEXTJOIN ()

=TEXTJOIN(", ",TRUE,J3:M3) 

В TRUEкачестве второго критерия автоматически пропускаются все пропуски.

ПРИМЕЧАНИЕ: я знаю состояние OP Excel 2010, это для будущих читателей.

0
Sandeep

Попробуй это:

=CONCATENATE( IF(ISBLANK(J3),"",J3&", "), IF(ISBLANK(K3),"",K3&", "), IF(ISBLANK(L3),"",L3&", "), IF(ISBLANK(M3),"",M3)) 

Функция Microsoft Excel ISBLANK может использоваться для проверки пустых или нулевых значений.

Здесь ISBLANK()функция используется для проверки, имеет ли ячейка значение. Если значения нет, ""в результат добавляется пустая строка. В противном случае ", "добавляется значение ячейки вместе со строкой .

Спасибо за ваш вклад. Вы можете это объяснить? :) bertieb 6 лет назад 0
Вы на правильном пути, но конкатенация запятой к приведенному значению оставит дополнительную запятую, если после этого не будет значений. fixer1234 6 лет назад 0
0
Kevin Anthony Oppegaard Rose

Попробуйте добавить IF()оператор в каждую ячейку:

=IF(J3<>"";J3;"")&(IF(K3<>"";", "&K3;""))&(IF(L3<>"";", "&L3;""))&(IF(M3<>"";", "&M3;"")) 

Обратите внимание на небольшое изменение в формуле для первого IF()утверждения.

Это запустит строку с `;`, если J3 пустое, может потребоваться добавить `;` к J3 и использовать MID (), чтобы начать со второго символа, чтобы гарантировать, что `;` не будет добавлено. Scott Craner 6 лет назад 0
@ ScottCraner нет, это не так. Поэтому мой комментарий «Обратите внимание на небольшое изменение ...» я исправил для этого. Однако, если оба J3 и K3 не заполнены, то он начнется с a; Kevin Anthony Oppegaard Rose 6 лет назад 0
извините, он оставит `,` на передней панели, если J3 пусто. Смотрите [Здесь] (https://imgur.com/a/DmC2va2) Scott Craner 6 лет назад 0
0
fixer1234

Скотт представляет изящное решение для новых версий Excel. Другие три решения (пока что) используют простые функции, которые работают в любой версии Excel. Однако запятые с разделителями на самом деле немного сложнее, чем эти формулы. Для этого в таком стиле решения требуется некоторая логика для каждой запятой.

Вот возможные комбинации существующих и отсутствующих значений:

enter image description here

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

Самый простой способ сделать это - связать запятую со значением «next». В каждой позиции запятой нет запятой, если перед ней не было значений (это разные случаи для каждой позиции). Если есть какое-либо предшествующее значение, вам нужна запятая, только если в следующей позиции есть значение. Таким образом, логика запятой выглядит так:

First comma: =IF(J3="","",IF(K3="","",", ")) or =IF(AND(J3<>"",K3<>""),", ","") Second comma: =IF(J3&K3="","",IF(L3="","",", ")) or =IF(AND(J3&k3<>"",L3<>""),", ","") Third comma: =IF(J3&K3&L3="","",IF(M3="","",", ")) or =IF(AND(J3&K3&L3<>"",M3<>""),", ","") 

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

enter image description here

Решение объединяет значения (или пустые, если их нет) с запятыми. Для удобства чтения вот формула с запятой, вставленной в качестве ссылки на ячейку формулы:

=IF(J3="","",J3) &N3 &IF(K3="","",K3) &O3 &IF(L3="","",L3) &P3 &IF(M3="","",M3) 

Подстановка формул запятых в формулу результата дает вам:

=IF(J3="","",J3) &IF(AND(J3<>"",K3<>""),", ","") &IF(K3="","",K3) &=IF(AND(J3&k3<>"",L3<>""),", ","") &IF(L3="","",L3) &=IF(AND(J3&K3&L3<>"",M3<>""),", ","") &IF(M3="","",M3) 

enter image description here

-2
Rajesh S

Введите эту формулу в пустую ячейку, где вы хотите получить объединенный результат.

=IF(LEN(TRIM(J3))=0,",",J3)&IF(LEN(TRIM(K3))=0,",",K3)& IF(LEN(TRIM(L3))=0,",",L3)& IF(LEN(TRIM(M3))=0,"",M3) 

Или вы можете использовать это также,

=TRIM(J3 & K3 &","& L3&","&M3) 

NB. В приведенном выше примере ячейка J3 не является пустой ячейкой, и, пожалуйста, измените адрес ячейки в соответствии с вашими потребностями.

Ваша первая формула практически совпадает с решением Кевина, опубликованным за 20 часов до вас. Вторая и третья формулы не добавляют разделитель между элементами, как показано в вопросе. Пожалуйста, оставляйте ответ только в том случае, если он действительно отвечает на вопрос и предоставляет новую информацию по сравнению с существующими ответами. Máté Juhász 6 лет назад 1
@ MátéJuhász, на самом деле я не заметил ответа Кевина, и в моей второй формуле отдельно было Бланк вместо запятой. Теперь я редактировал 2-ю и 3-ю Формулу. И я показал 3 разных примера в контексте большего объема. :-) Rajesh S 6 лет назад 0
Первая формула неверна, потому что она помещает нежелательную запятую в каждом месте, где есть пропущенное значение (что пытается исправить ОП), и нет запятой, когда есть фактические значения для разделения. Вторая формула дублирует проблему, которую пытается решить OP, и исключает запятую между J3 и K3, когда оба имеют значения. Если вы на самом деле создали примеры и проверили эти формулы с отсутствующими значениями и без них, сразу было бы очевидно, что ответ будет плохим, если вы прочитаете вопрос. fixer1234 6 лет назад 0
@ fixer1234, обе формулы работают правильно, если вы чувствуете, что я могу загрузить снимок экрана. Rajesh S 6 лет назад 0
Я опубликовал ответ, потому что многие ошиблись. Воспользуйтесь примером возможных комбинаций, который я использовал, и проверьте свои формулы по нему. Вы увидите, что ни одна из формул в вашем ответе не выполняет то, что задает вопрос. fixer1234 6 лет назад 0

Похожие вопросы