1

Задача моей формулы - извлечь Value для Item Number Type элемента в следующем XML-подобном тексте:

<CustomField>
    <Name>Level of Concern</Name>
    <Value>N/A</Value>
</CustomField>
<CustomField>
    <Name>Item Number Type</Name>
    <Value>None</Value>
</CustomField>

"Нет" - желаемая подстрока. Готовьтесь к действительно ужасной формуле:

=MID(D8, SEARCH("Item Number Type</Name><Value>", D8) + 30, 
    SEARCH("<", D8, SEARCH("Item Number Type</Name><Value>", D8) + 30)-
    (SEARCH("Item Number Type</Name><Value>", D8) + 30))

Эта формула работает. Без переменных (т. Е. Возможность хранить начальный индекс подстроки, который используется 3 раза), я не знаю, как выполнить то, что мне нужно, более чистым, более эффективным способом, не так ли?

1 ответ1

1

Предполагая, что вы используете последнюю версию Excel, вы можете использовать FILTERXML для запуска запроса Xpath.

Вам, вероятно, понадобится превратить XML-подобный текст в действительный XML, также поместив его в корневой элемент.

Что-то вроде:

=FILTERXML("<root>" & D8 & "</root>", 
           "//CustomField[Name='Item Number Type']/Value/text()")

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .