
У меня есть один столбец, содержащий строку следующего шаблона:
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
решение1
Поместите это в первую строку и измените 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)
Затем перетащите еще на два столбца и вниз на необходимую длину.
решение2
Используя ваш пример:
длинный-url-здесь?a=0&b=4&tv_a=привет&tv_b=там&tv_3=сейчас
Я подхожу к вещам "по частям", или разбиваю проблему на более мелкие части, а затем собираю их. Это также известно как подход "разделяй и властвуй". Вот как это выглядит:
Вы определили, что в URL-адресах есть 3 переменные, которые вас интересуют, в следующем порядке:
тв_а,тв_б,тв_3.Но пусть будет так:тв_а,тв_пчела,тв_300000
Учитывая URL, давайте найдем tv_a:
=НАХОДИТЬ("tv_a", URL, 1)"="23"="позиция- найдите строку tv_a в URL, начиная с позиции 1-го символа в строке.
Какова длина переменной tv_a?
=ЛЕН("тв_а")"="4"="длина
ДжевенURLипозицияиз первыхпеременнаяидлинапеременной, найдем слово после знака «=»:
=СРЕДНИЙ(URL, переменная+длина+1, длина+1)"="привет
Вы можете объединить всю формулу в одну. Это тривиальная задача в Excel. Соглашение об именовании в этом примере следующее:URL-адрес=А3,первый=В2,второй=С2,третий=D2. Вот как это выглядит:
Все три переменные: wrt Изображение выше макет
1-й=MID(url,B3+LEN(первый)+1,C3-B3-LEN(первый)-2)=привет
2-й=MID(url,C3+LEN(второй)+1,D3-C3-LEN(второй)-2)=там
3-й=RIGHT(url,LEN(url)-FIND(третий,url,D3)-LEN(третий))=сейчас
Пример тривиальной задачи: использование вспомогательных клеток
Пусть B3=FIND(first,url,1), C3=LEN(first): предпочтительнее 1-й=MID(url,B3+LEN(первый)+1,C3-B3-LEN(первый)-2)=привет
При замене вы можете использовать одну строку вместо вспомогательных ячеек: 1-й=СРЕДНИЙ(url,НАЙТИ(первый,url,1)+ДЛИНА(первый)+1,НАЙТИ(второй,url,1)-НАЙТИ(первый,url,1)-ДЛИНА(первый)-2)=привет
Вы обнаружите, что при решении таких задач лучше использовать методы поэлементного решения, чтобы вернуться к проектам для последующего использования в других схожих областях; таким образом, вы сможете легче увидеть решение задачи, поскольку оно прямолинейно.
*Соглашение об именовании:https://support.office.com/en-us/article/Определение-и-использование-имен-в-формулах-4d0f13ac-53b7-422e-afd2-abd7ff379c64