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