Скотт представляет изящное решение для новых версий 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)