Как найти строку внутри строки - PullRequest
0 голосов
/ 23 марта 2012

У меня есть список с примерно 100 000 строк ссылок на сайт

  • Каждая ссылка уникальна, но она соответствует ?Item=
  • Тогда это либо ничто, либо оно продолжается после символа &.

Мой вопрос: как мне вытащить номера предметов?

Я знаю, что функция замены может предложить аналогичную функциональность, но она работает с фиксированными размерами, в моем случае строка может быть разного размера.

Пример ссылки:
www.site.com?sadfsf?sdfsdf&adfasfd?Item=JGFGGG55555
или
www.site.com?sadfsf?sdfsdf&adfasfd?Item=JGFGGG55555&sdafsdfsdfsdf

В обоих случаях мне нужно получить JGFGGG55555 только

Ответы [ 2 ]

2 голосов
/ 23 марта 2012

Если это всегда последняя часть строки, вы можете использовать следующее:

=MID(A1, FIND("?Item=", A1) + 6, 99)

Это предполагает:

  • номер позиции не будет более 99 цифр.
  • никаких дополнительных полей за номером позиции нет.

Изменить:

После обновления вашего вопроса становится очевидным, что после поля ?Item= у вас есть несколько строк с дополнительными данными. Без использования VBA нет простого способа использования MID и FIND для его извлечения.

Однако вы можете создать столбец, который будет заполнителем.

Например, создать столбец, используя:

=MID(A1,FIND("?Item=",A1)+6,99)

Это дает вам следующее значение: JGFGGG55555&sdafsdfsdfsdf

Затем создайте столбец, используя:

=IF(ISERROR(FIND("&",B2)),B2,LEFT(B2,FIND("&",B2)-1))

Это дает: JGFGGG55555 путем поиска первого значения для & и использования части перед ним. Если он не найден, первое значение просто повторяется.

0 голосов
/ 17 января 2014

Эта формула должна работать для обоих приведенных примеров:

=MID(A1,FIND("=",A1),IFERROR(LEN(A1)-FIND("&",A1,FIND("=",A1))-1,LEN(A1)+1-FIND("=",A1)))
...