Объединение данных (но игнорирование пустых ячеек)
Я ищу, чтобы объединить текстовые данные разных ячеек в Excel. В настоящее время я использую формулу:
=J3&", "&K3&", "&L3&", "&M3
Когда все мои ячейки содержат текст, результат именно то, что я хочу.
Однако в некоторых случаях существуют ячейки без данных. На данный момент моя формула просто возвращает ",,, " если в ячейках нет данных. Есть ли способ переписать формулу, чтобы она игнорировала ячейки, которые не содержат никаких данных?
5 ответов
С Office 365 Excel это становится легко.
Office 365 Excel представил TEXTJOIN()
=TEXTJOIN(", ",TRUE,J3:M3)
С TRUE
в качестве второго критерия автоматически пропускаются все пропуски.
ПРИМЕЧАНИЕ: я знаю состояние OP Excel 2010, это для будущих читателей.
Попробуйте добавить IF()
утверждение для каждой ячейки:
=IF(J3<>"";J3;"")&(IF(K3<>"";", "&K3;""))&(IF(L3<>"";", "&L3;""))&(IF(M3<>"";", "&M3;""))
Обратите внимание на небольшое изменение в формуле для первого IF()
заявление.
Попробуй это:
=CONCATENATE( IF(ISBLANK(J3),"",J3&", "), IF(ISBLANK(K3),"",K3&", "), IF(ISBLANK(L3),"",L3&", "), IF(ISBLANK(M3),"",M3))
Функция Microsoft Excel ISBLANK может использоваться для проверки пустых или нулевых значений.
Вот ISBLANK()
Функция используется для проверки, имеет ли ячейка значение. Если нет значения, то пустое ""
Строка добавляется в результат. В противном случае значение ячейки вместе со строкой ", "
добавлен.
Скотт представляет изящное решение для новых версий Excel. Другие три решения (пока) используют простые функции, которые работают в любой версии Excel. Однако запятые с разделителями на самом деле немного сложнее, чем эти формулы. Для этого в таком стиле решения требуется некоторая логика для каждой запятой.
Вот возможные комбинации существующих и отсутствующих значений:
В первом ряду нет пропущенных значений. Следующие четыре строки имеют одно пропущенное значение в каждой возможной позиции. Следующие шесть строк имеют два пропущенных значения в каждой возможной позиции. Затем четыре строки из трех пропущенных значений и, наконец, все пропущенные значения. Чтобы получить запятую там, где она нужна, и только там, где она нужна, вам нужна логика для каждой запятой.
Самый простой способ сделать это - связать запятую со значением "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<>""),", ","")
Я поместил каждую запятую в отдельный столбец, чтобы проиллюстрировать шаблон с различными комбинациями значений:
Решение объединяет значения (или пустые, если их нет) с запятыми. Для удобства чтения вот формула с запятой, вставленной в качестве ссылки на ячейку формулы:
=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)
Введите эту формулу в пустую ячейку, где вы хотите получить объединенный результат.
=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 не является пустой ячейкой, и, пожалуйста, измените адрес ячейки в соответствии с вашими потребностями.