#excel #excel-formula
Вопрос:
Пытаюсь выяснить, есть ли лучший способ написать эту формулу без необходимости повторять команду MID так много раз.
=IFERROR(IF(FIND(«/»,MID(C2,25,100))>0,LEFT(MID(C2,25,100),FIND(«/»,MID(C2,25,100))-1)),MID(C2,25,100))
Примеры данных:
corp.mycompany.com/Here/Location
corp.mycompany.com/Here/Location/OtherOU
Результатом обоих этих действий будет «Местоположение».
Есть ли лучший способ написать формулу?
Комментарии:
1. если вы используете Excel 365, попробуйте ЭТУ функцию. Если вы никогда не пользовались им раньше, вы можете погуглить его. Exceljet.net есть несколько хороших примеров.
2. Используя Excel 2016, в котором, похоже, нет команды LET.
Ответ №1:
Если вы ищете строку после второй косой черты до третьей косой черты, вы можете использовать FILTERXML
, а затем INDEX
результат, если у вас новейшая версия Excel. Например:
=INDEX(FILTERXML("<t><s>"amp;SUBSTITUTE(A1,"/","</s><s>")amp;"</s></t>","//s"),3)
Если вам нужна строка после третьей косой черты до четвертой, просто замените 3 на 4 в формуле и т. Д.
Комментарии:
1.
=FILTERXML("<t><s>"amp;SUBSTITUTE(A1,"/","</s><s>")amp;"</s></t>","//s[3]")
сделал бы то же самое, избегая ИНДЕКСА.2. Хорошим методом является включение в и XML-строку, чтобы ее было проще обрабатывать. Оба решения до сих пор-это то, о чем я не думал. Сможете использовать их в других местах. Спасибо.
Ответ №2:
Комментарии:
1. Очень творческое использование функций ЗАМЕНЫ и ПОВТОРЕНИЯ. Мне потребовалось немного поработать и протестировать, чтобы понять, как это на самом деле работает. Спасибо.