#excel #excel-formula #substring
Вопрос:
Я пытаюсь извлечь некоторую информацию из одной строки текста в ее собственное поле и задаюсь вопросом, может ли кто-нибудь помочь. Звучит достаточно просто, и я могу заставить его работать так, как хочу, но когда положение текста меняется, он не может его найти. Я пробовал использовать среднюю, левую, правую, но без особого успеха.
Это базовая электронная таблица, используемая в качестве списка заданий, для отслеживания того, в какую страну был отправлен каждый элемент. Или, не было ли оно отправлено с помощью курьера, и ничего не требуется отмечать.
Надеюсь, моя фотография объясняет это, и формула на этой фотографии такова:
=MID(LEFT(A1,FIND(")",A1)-1),FIND("(Shipped to ",A1) 12,LEN(A1))
У меня есть строки текста, показывающие что-то вроде:
- Должность (Отправлена в Великобританию) (Отслеживание Почтовых Отправлений № 123456890)
- Должность (Отправлена в Бельгию) (Отслеживание Почтовых Отправлений № 123456890)
- Должность (Отправлена в Австрию) (Отслеживание Почтовых Отправлений № 123456890)
и мой вышеприведенный код пройдет по стране, как я захочу.
.. но очень часто каждая строка будет переворачиваться, так что показывайте, как:
- Должность (Номер отслеживания почтовых отправлений 123456890) (Отправлено в Великобританию)
.. что нарушает формулу из-за левого/правого/среднего положения.
Это текущая электронная таблица, поэтому я хотел бы использовать единую формулу, если это возможно. Я знаю, что могу обойти проблему, запустив вторые формулы для ошибочных записей, но предпочел бы этого не делать.
Наконец, когда не было никакой доставки, он генерирует ошибку значения (так как он вообще не смог найти строку). Опять же, я мог бы сказать «Без доставки», запустив вторую формулу, но это не идеально.
У кого-нибудь есть более простые идеи получше? Фото прилагается для справки!
Я просто хочу вытащить слово после «(Отправлено в «и перед следующим»)», независимо от его относительного положения в строке текста.
Большое спасибо
Ответ №1:
=MID(MID(A1,FIND("SHIPPED TO",UPPER(A1),1) 11,25),1,FIND(")",MID(A1,FIND("SHIPPED TO",UPPER(A1),1) 11,25),1)-1)
Для этого требуется 25-символьный фрагмент строки и его просмотр. Если это в конце строки, это не будет иметь значения. Оттуда он будет препарировать его дальше, используя только этот срез для работы.
Комментарии:
1. Обновляю свой ответ 🙂
2. Спасибо, это сработало. Удалил мои предыдущие комментарии, так как я понял, что вы активно редактировали/изменяли вещи, когда я также отвечал. Но это работает, спасибо. Я должен быть в состоянии просто предположить что-либо без записи сейчас (или с ошибочной ошибкой «#ЗНАЧЕНИЕ!», что означает отсутствие почтовых расходов. И найдите/замените это для предыдущих записей. Возможно, стоит отметить, что некоторые линии намного длиннее других, но в данный момент это, похоже, работает.
3. Рад помочь! Заверните его в ан
IFERROR()
, и вы будете золотыми. Если «Отправлено» превышает 25 символов, просто увеличьте 25. Не имеет значения, насколько большим вы его сделаете. Это все равно будет работать.4. Спасибо, я это сделал — так что, если это работает, все в порядке, а если это ошибка, я установил «Без почтовых расходов». Так что да, работает отлично. Спасибо.