#excel #excel-formula
Вопрос:
Хотел проверить, можно ли использовать КОНКАТЕНАЦИЮ (не уверен, что в моем excel есть TEXTJOIN), и как показать только текст с пустым значением в ячейках.
Например, в моем приложении ниже я хочу, чтобы предполагаемый результат был показан, как в B2 и B3, где тексты показаны с разделителем, когда значения являются ложными (пустыми).
Если бы я использовал ОБЪЕДИНЕНИЕ, как в строке 10 и строке 11, это было бы довольно вручную, и оно фиксировало бы только «положительные значения», как в непустых ячейках.
Цель: Отображение ожидающих задач (пустые/незаполненные ячейки статуса)
Комментарии:
1. Если у вас есть КОНКАТ, то у вас есть ТЕКСТОВОЕ СОЕДИНЕНИЕ. Просто попробуй
=TEXTJOIN(",",1,{"A","B","C"})
. Если это дает вам «A,B,C», то у вас есть ТЕКСТОВОЕ соединение. Если это так, то, возможно, то, что мешает вам использовать решение Эйлера, — это ФИЛЬТР. Тогда вам нужен обходной путь для этого.2. @markfitzpatrick
CONCATENATE
, который использует операция, отличается отCONCAT
.CONCATENATE
доступен во всех версиях Excel, в то времяCONCAT
как доступен только в Office 365 и Excel 2019.3. Эй, @ScottCraner — я этого не знал. Это действительно старая функция. В любом случае, я не вижу способа объединить его с КОНКАТЕНАЦИЕЙ. Кажется почти бесполезной функцией в современном Excel.
4. @markfitzpatrick, на мой взгляд, это было бесполезно с момента его создания. Тот факт, что я могу использовать
amp;
для того же самого, не печатаяCONCATENATE
, делает его утомительным в использовании.5. спасибо, ребята, ценю комментарии, был занят другими делами, так что у меня нет времени, чтобы действительно попробовать, и я обычно тоже изучаю предоставленные формулы, и это займет время, попробую и то, и другое и опубликую результаты как можно скорее,
Ответ №1:
Используйте MID с ОБЪЕДИНЕННЫМИ IFS:
=MID(IF(C2="","/"amp;$C$1,"")amp;IF(D2="","/"amp;$D$1,"")amp;IF(E2="","/"amp;$E$1,"")amp;IF(F2="","/"amp;$F$1,"")amp;IF(GC2="","/"amp;$G$1,"")amp;IF(H2="","/"amp;$H$1,""),2,999)
Комментарии:
1. =MID(IF(C2=»»,»/»amp;$C$1,»»)amp;IF(D2=»»,»/»amp;$D$1,»»)amp;IF(E2=»»,»/»amp;$E$1,»»)amp;IF(F2=»»,»/»amp;$F$1,»»)amp;IF(G2=»»,»/»amp;$G$1,»»)amp;IF(H2=»»,»/»amp;$H$1,»»),2,999) это работает в моем текущем excel на листе тестирования благодаря @Scott Craner позже примерит рабочие файлы и посмотрит, как пойдет работа с объединенными ячейками и будут ли данные мешать другим формулам
Ответ №2:
Я бы использовал TEXJOIN
и FILTER
, если у вас есть новейшая версия Excel.
Например: =TEXTJOIN("/",1,FILTER($E$2:$I$2, ISBLANK(E3:I3)))
ИЗМЕНИТЬ: Для более старых версий временное решение заключается в следующем:
- создайте временный массив того же размера, что и исходный кадр данных, где каждое значение определяется такой формулой, как
=IF(ISBLANK(E3), E$2amp;"/","")
- Используйте что-то вроде
=LEFT(CONCAT(E15:J15), LEN(CONCAT(E15:J15))-1)
, чтобы получить желаемый результат (где E15:J15-это место, где я решил хранить первую строку временного массива, созданного на шаге 1).
Комментарии:
1. Привет, только что попробовал, и да, очевидно, я все еще оснащен более старой версией, так как я не могу использовать эту функцию. Есть ли какая-либо функция, аналогичная текстовому соединению? Я могу вернуться только к КОНКАТЕНАЦИИ, в которой я пытался, хотя и не понимал, как это сделать. Однако я попытаюсь импортировать свои файлы в Gsheet и сделать некоторые настройки и тестирование, надеюсь, это сработает в соответствии с моими намерениями.
2. @Дик Вун Данг, тогда я не совсем уверен, как сделать это за один раз. Посмотрите мой комментарий, чтобы найти обходной путь, который может помочь, но импорт в Google Таблицы и работа оттуда тоже неплохая идея. Надеюсь, у вас все получится!
3. @Euler’S Disgracedstepchild просто к вашему сведению, если у них нет текстового соединения, у них нет КОНКАТА. Они вышли одновременно.
Ответ №3:
Я не уверен в вашей версии Excel, но я думаю, что это будет работать в более старых версиях (отформатировано для удобства чтения — будет работать, если вы вставите его непосредственно в ячейку B2 и скопируете вниз):
=LEFT(CONCAT( INDEX( CHOOSE({1;2;3},$C$1:$H$1,{"/","/","/","/","/","/"},{"","","","","",""}),
INDEX( IF(ISBLANK(C2:H2),{1;2},{3;3}),
MOD(COLUMN(A1:INDEX(1:1,,12))-1,2) 1,
(COLUMN(A1:INDEX(1:1,,12))-1)/2 1 ),
(COLUMN(A1:INDEX(1:1,,12))-1)/2 1 ) ),
SUM(7*ISBLANK(C2:H2))-1 )
Примечания
- Поскольку это формула массива, вам, возможно, придется ввести ее с CTRLпомощью SHIFT ENTERв более старой версии Excel.
- Все метки статистики должны иметь длину 6 символов, как показано в вашем сообщении. Если нет, то они должны, по крайней мере, иметь одинаковую длину, и последняя строка
SUM(7*ISBLANK(C2:H2))-1
должна быть изменена, чтобы заменить 7 на длину строки 1, например, будет длина 9SUM(10*ISBLANK(C2:H2))-1
. - Если они не имеют одинаковой длины, ЛЕВАЯ( может быть удалена вместе с
SUM(10*ISBLANK(C2:H2))-1)
концом. В конце концов у вас будет конечный / разделитель в конце. Вы могли бы исправить это для случая , когда статистика F является последней частью, изменив{"/","/","/","/","/","/"}
значение на{"/","/","/","/","/",""}
, но в других случаях все равно будет стоять /. Другой подход гораздо сложнее, но компонентSUM(10*ISBLANK(C2:H2))-1)
может быть сформирован таким образом, чтобы определить, что нужно отрезать, или, возможно, может быть встроен вспомогательный столбец — в любом случае, давайте надеяться, что ваша ситуация такова, что все метки статистики имеют одинаковую длину. - Разделитель «/» можно изменить, но он всегда должен состоять из одного символа. Если нет, то последняя строка должна быть изменена на
SUM( [label length delimiter length] *ISBLANK(C2:H2))-1
. - Эта формула закреплена в 6 столбцах статистики. Если вам нужно, чтобы он вместил больше, это можно сделать, расширив
{"/","/","/","/","/","/"}
и{"","","","","",""}
(по одному элементу для каждого нового столбца) и заменив каждые 12 на 2-кратное количество столбцов. Кроме того, очевидно, что ссылки $C$1:$H$1 и C1:H2 должны быть изменены для чтения в ваших новых столбцах.