Хорошо, если сделать это только для одной строки, T2C (текст в столбцы) + C & TP (копирование и транспонирование вставки) будет достаточно. Просто делаю каждый шаг 2 раза так:
T2C с # разделителем изменится
page_age:15#resp_gender:4#EN01CTY:3#QMktSize:6#Page_Device_usagesm:8
в
A | B | C | D | E
page_age:15 | resp_gender:4 | EN01CTY:3 | QMktSize:6 | Page_Device_usagesm:8
C & TP изменит его на строки
page_age:15
resp_gender:4
EN01CTY:3
QMktSize:6
Page_Device_usagesm:8
следующий T2C с разделителем : изменит его на почти готовую таблицу
A | B
page_age | 15
resp_gender | 4
EN01CTY | 3
QMktSize | 6
Page_Device_usagesm | 8
последний C & TP переключит его на вид, который мы хотим
A | B | C | D | E
page_age | resp_gender | EN01CTY | QMktSize | Page_Device_usagesm
15 | 4 | 3 | 6 | 8
Тем не менее, сделать это для нескольких строк будет много работы. Давайте пока предположим, что мы ищем только определенные значения, имеющие эти значения:
page_age:15#resp_gender:4#EN01CTY:3#QMktSize:6#Page_Device_usagesm:8
page_age:3#resp_gender:11#EN01CTY:9#QMktSize:4#Page_Device_usagesm:1
page_age:9#resp_gender:5#EN01CTY:7#QMktSize:2#Page_Device_usagesm:12
page_age:22#resp_gender:8#EN01CTY:1#QMktSize:5#Page_Device_usagesm:2
(имея это в ячейках A2 до A4 потому что мы хотим строку 1 для заголовков)
Что мы знаем? Перед значениями всегда стоит символ : а за ними - знак # (кроме последнего элемента).
Что мы хотим? Вырежьте текст перед и после значения, которое мы желаем.
Предположим снова что-то: мы хотим получить значения от resp_gender , поэтому мы устанавливаем resp_gender качестве заголовка для столбца B (в B1).
Начинаем резать все перед нашей ценностью. Таким образом, нам нужно найти, где это начинается. Функция FIND сделает именно это. Поэтому мы пробуем это с =FIND(B$1,$A1) ($ - для того, чтобы сделать его перетаскиваемым позже), и получаем 13. Просто поместите это в RIGHT формулу с LEN чтобы проверить это:
=RIGHT($A1,LEN($A1)-FIND(B$1,$A1))
приведет нас к esp_gender:4#EN01CTY:3#QMktSize:6#Page_Device_usagesm:8 .
Хорошо, нам нужно также вычесть длину самого заголовка, чтобы он стал:
=RIGHT($A2,LEN($A2)-FIND(B$1,$A2)-LEN($B1))
и мы получаем 4#EN01CTY:3#QMktSize:6#Page_Device_usagesm:8 . Круто, нет необходимости вычислять : потому что оно уже вырезано. Все, что нам нужно сделать сейчас, это вырезать текст после значения.
Чтобы не убивать формулу и держать ее короткой на данный момент, мы оставляем ее в B2, как есть, и делаем правильное сокращение в C2 (только сейчас). Как мы знаем, мы можем довольно легко найти # с помощью FIND . Слияние с LEFT формулой должно дать нам то, что мы хотим:
=LEFT(B2,FIND("#",B2))
дает нам 4# . ОК, один символ слишком длинный, так что только -1 сделает это:
=LEFT(B2,FIND("#",B2)-1)
Теперь мы объединяем обе формулы друг с другом, просто копируя формулу из B2 (без =) и вставляя ее в каждую B2 во второй формуле. Таким образом, мы получаем:
=LEFT(RIGHT($A2,LEN($A2)-FIND(B$1,$A2)-LEN($B1)),FIND("#",RIGHT($A2,LEN($A2)
-FIND(B$1,$A2)-LEN($B1)))-1)
который возвращает 4 . Похоже, это работает. Проверяя его для всех заголовков, мы получаем проблему, если мы идем к последней части (за которой не следует #). Но простой IFERROR покроет это. Итак, мы заканчиваем с этим:
=IFERROR(LEFT(RIGHT($A2,LEN($A2)-FIND(B$1,$A2)-LEN($B1)),FIND("#",RIGHT($A2,LEN($A2)
-FIND(B$1,$A2)-LEN($B1)))-1),RIGHT($A2,LEN($A2)-FIND(B$1,$A2)-LEN($B1)))
Это было много текста, чтобы получить формулу, которую вы хотите. Но просто возьмите это за небольшой урок, чтобы получить формулы в будущем (всегда имейте в виду, что есть разные способы получить именно это).