Excel — Поиск списка подстрок в больших строках

Excel — Поиск списка подстрок в больших строках

Я столкнулся со следующими трудностями; это может оказаться непростой задачей.

У меня есть файл Excel, экспортированный из XML-приложения.

Лист 1содержит ряды строк, подобные тем, что приведены ниже. Каждая нечетная строка содержит около 10 таких строк, но это может варьироваться. (Я ищу решение для заполнения четных строк; см. ниже.)

Лист 2, столбец A, содержит ряд строк, таких как Measurement_1, Ref_Noи Maximum_Velocity, называемыхАтрибуты.

Мне нужно найти каждый из этих атрибутов в каждой ячейке каждой нечетной строкиЛист 1, и вставьте каждыйуникальныйатрибут, который отображается как подстрока в этих строках в новой строке ниже, каждый в своей ячейке.

Обратите внимание, что каждое значение в сгенерированных строках должно быть уникальным.

Есть ли какая-то функция, регулярное выражение или скрипт VBA, которые могут это сделать? Я много искал на форумах и в других местах, но не смог сделать это сам.

Надеюсь, все это понятно, но я с радостью объясню любую тарабарщину!


Ряд 1

Cell A1:
<ref attrid="Measurement_1" equalsign="=" includeattrname="false" resolveto="valueandunit" separator=""><ref attrid="Measurement_1" equalsign="=" includeattrname="false" resolveto="valueandunit" separator=" - "></ref></ref>

Cell B1:
"<ref attrid="Ref_No" equalsign="=" includeattrname="false" resolveto="valueandunit" separator=""><ref attrid="Unit" equalsign="=" includeattrname="false" resolveto="valueandunit" separator=" "><ref attrid="Vector" equalsign="=" includeattrname="false" resolveto="value" separator=" (Dia)"><ref attrid="Object_Diameter" equalsign="=" includeattrname="false" resolveto="unit" separator=""><ref attrid="Thread_Size" equalsign="=" includeattrname="false" resolveto="valueandunit" separator=","><ref attrid="Object_Length" equalsign="=" includeattrname="false" resolveto="value" separator=" "><ref attrid="Object_Length" equalsign="=" includeattrname="false" resolveto="value" separator=" of ">"

Cell C1:
CONCATENATE("This ", LOWER(VAL("Device_Type")),F(AND(EXACT(VAL("Max_Temperature_Range"),("")),EXACT(VAL("Min_Temperature_Range"),"")),".",CONCATENATE("appeared to operate safely from a minimum temperature of ", VAL("Min_Temperature_Range"),UNIT("Min_Temperature_Range")," to a maximum temperature of ", VAL("Max_Temperature_Range"),UNIT("Max_Temperature_Range"),".")))

Желаемый результат вРяд 2будет выглядеть так:

Cell A2:Measurement_1
Cell B2:Ref_No
Cell C2:Object_Diameter
Cell D2:Object_Length
Cell E2:Device_Type
Cell F2:Max_Temperature_Range
Cell G2:Min_Temperature_Range

решение1

Ваши XML-строки выглядят странно — много неполных тегов?

В любом случае я бы начал с XML-файла и загрузил его с помощью надстройки Power Query. У нее есть специальный обработчик «From XML», и вы можете легко формировать данные по пути с помощью команд Power Query.

Вот пример, который я создал, используя отредактированную версию вашего XML-контента (я добавил корневой элемент и закрывающие теги, чтобы сделать его допустимым XML-файлом).

Power Query — пример из XML-файла

Единственное действие, которое, как мне показалось, необходимо для достижения желаемого результата, — это выбрать столбец Attribute:attrid и выбрать «Удалить столбцы» / «Удалить другие столбцы».

Вы можете увидеть результат на заднем плане - таблицу Excel. Каждый раз, когда XML-файл изменяется, вы просто нажимаете «Обновить», чтобы повторно запустить Power Query.

Связанный контент