我怎样才能使这个子串提取公式更高效并且更容易阅读?

我怎样才能使这个子串提取公式更高效并且更容易阅读?

我的公式的任务是提取以下类似 XML 的文本中的元素ValueItem Number Type

<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()")

相关内容