Я столкнулся со следующими трудностями; это может оказаться непростой задачей.
У меня есть файл 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-файлом).
Единственное действие, которое, как мне показалось, необходимо для достижения желаемого результата, — это выбрать столбец Attribute:attrid и выбрать «Удалить столбцы» / «Удалить другие столбцы».
Вы можете увидеть результат на заднем плане - таблицу Excel. Каждый раз, когда XML-файл изменяется, вы просто нажимаете «Обновить», чтобы повторно запустить Power Query.