Итак, я пытаюсь сделать что-то немного более сложное, но я не уверен, как справиться с этим, так как я очень плохо знаком с синтаксисом кодирования VBA (но с некоторым опытом в других языках программирования)
В основном,Я пытаюсь проанализировать этот текст:
<Step>
<Description>
This is a description
</Description>
<Validation>
This is how we validate
</Validation>
</Step>
<Step>
<Description>
This is another description.
</Description>
<Validation>
And this is another validation.
</Validation>
</Step>
И он анализируется на основе ключевых токенов, которые начинают и заканчивают текст.Итак, начальные операторы - это квадратные скобки, за которыми следует дескриптор поля, и поэтому они закрыты квадратными скобками и косой чертой.
Сейчас я использую UDF с именем Supermid (взято из этого сайта), который возвращает значения между двумя заданными словами (в данном случае начальные и конечные токены, которые я только что описал).Поэтому, если приведенный выше текст находится в ячейке A1, Supermid(A1, "<Validation>","</Validation>")
вернет сообщение «Вот как мы проверяем».
У меня возникла проблема, когда я хочу перебрать указанный выше текст и проанализировать егоотдельно для каждого <Step> </Step>
экземпляра.
Так как есть два <Steps>
, инкапсулирующих токен описания и токен проверки, я бы хотел разделить их.
Таким образом, это выглядело бы примерно так:
Step 1 This is a description This is how we validate
Step 2 This is another description And this is another validation
По сути, я хочу пройтись по всему полю, и каждое обнаруженное обрабатывается как его собственная сущность, которая повторяется иразбирается в соответствии с соответствующими столбцами (столбец B для описания, столбец C для проверки)
Я думаю, что псевдокод будет выглядеть примерно так, если я включу supermid и значение, которое я хочуparse находится в ячейке A1:
For i = 0; i < Steps; i++:
Range("C1").Formula = "=supermid($A1, ""<Feature Description>"", ""</Feature Description>"")"
Range("D1").Formula = "=supermid($A1, ""<Feature Validation>"", ""</Feature Validation>"")"]
Range("B1").Formula = ""Step" & i" //this is to clarify which step number it is
Моя главная проблема - преобразование этого псевдо-кода в синтаксис VBA, так как я никогда не работал с ним в глубокой степени, и я учусь по ходу дела.Я думаю, что мне нужно посчитать вхождения Beginning <Step>
, сохранить его в Long и использовать его в качестве итератора для 'i'.
Самая большая проблема - разделение разобранного текста на новые строкидля каждой итерации, и я не уверен, как подсчитать количество шагов, которые встречаются в строковом значении, и соответственно разделить их.
Есть ли способ итерировать номер ячейки для каждой итерации цикла?И как я могу ссылаться на это значение «i» при отображении «Шаги»?
Если кто-нибудь может указать мне правильное направление, это будет ПОГОДНО оценено!
Спасибо !!!