Как сделать эту формулу извлечения подстроки более эффективной и удобной для чтения?

Как сделать эту формулу извлечения подстроки более эффективной и удобной для чтения?

Задача моей формулы — извлечь 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>

"None" — это искомая подстрока. Приготовьтесь к действительно ужасной формуле:

=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

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

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

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

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

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