У меня есть один столбец, который содержит строку в следующем шаблоне:

blablabla?bla&bla&tv_a=value1&tv_b=value2&tv_3=value3

Я хочу извлечь данные из tv_[i] в 3 отдельных столбца:

value1 value2 value3

Пример:

Для следующих двух записей:

long-url-here?a=0&b=4&tv_a=hello&tv_b=there&tv_3=now

other-url?z=4&v=2&tv_a=this&tv_b=is%20an2&tv_3=example

Столбцы должны быть:

column 1 | column 2 | column 3
-------------------------------
hello    | there    | now
this     | is an    | example

2 ответа2

4

Поместите это в первый ряд и замените A1 на первую ячейку:

=MID(TRIM(MID(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE($A1,"2",""),"%0"," "),"&tv_",REPT(" ",999)),999*COLUMN(A:A),999)),FIND("=",TRIM(MID(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE($A1,"2",""),"%0"," "),"&tv_",REPT(" ",999)),999*COLUMN(A:A),999)))+1,999)

Затем перетащите еще на два столбца и на нужную длину.

! [введите описание изображения здесь

1

Используя ваш пример:

давно URL-сюда?а = 0 & Ь = 4 & tv_a = привет & tv_b = есть & tv_3 = Теперь

Я подхожу к вещам, "по кусочкам", или разбиваю проблему на более мелкие части, затем собираю их. Это также известно как подход "разделяй и властвуй". Вот как это выглядит:

Вы определили, что в URL есть 3 переменные, которые вас интересуют, по порядку:
     тв_а, тв_б, тв_3 .Но давайте позволим этому быть: tv_a, tv_bee, tv_300000

Учитывая URL, давайте найдем tv_a:
     = НАЙТИ ( "tv_a", URL, 1 ) = 23 = позиция - найти строку tv_a в URL, начиная с позиции 1-го символа в строке.

Какова длина переменной, tv_a?
      = LEN( "tv_a" ) = 4 = длина

Получив URL-адрес и положение первой переменной и длину переменной, давайте найдем слово после знака «=»:
      = MID( URL, переменная + длина + 1, длина + 1 ) = привет

Вы можете объединить всю формулу в одну формулу. Это тривиальная задача в Excel. Соглашение об именах в этом примере: url = A3, первый = B2, второй = C2, третий = D2. Вот как это выглядит: Все три переменные: Wrt Изображение выше макета
     Первый = MID(URL, B3+LEN(первый)+1, С3-В3-LEN(первый)-2)= привет
     2-й = MID(URL, C3+LEN(второй)+1, D3-С3-LEN(второй)-2)= есть
     Третий = RIGHT(URL, LEN(URL)-find (третий, URL, D3)-LEN(третий))= в настоящее время

Пример тривиальной задачи: использование вспомогательных клеток

Let B3=FIND(first,url,1), C3=LEN(first): preferred
1st=MID(url,B3+LEN(first)+1,C3-B3-LEN(first)-2)=hello
By substitution, you can use a single line instead of helper-cells:
1st=MID(url,FIND(first,url,1)+LEN(first)+1,FIND(second,url,1)-FIND(first,url,1)-LEN(first)-2)=hello

Вы обнаружите, что для решения подобных проблем лучше использовать методы поэтапного решения для возврата к проектам для последующего использования в других аналогичных областях; таким образом, вы можете увидеть решение проблемы проще, потому что это далеко вперед.

* Соглашение об именах: https://support.office.com/en-us/article/Define-and-use-names-in-formulas-4d0f13ac-53b7-422e-afd2-abd7ff379c64

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .