この部分文字列抽出式をより効率的かつ読みやすくするにはどうすればよいでしょうか?

この部分文字列抽出式をより効率的かつ読みやすくするにはどうすればよいでしょうか?

私の数式のタスクは、次の XML のようなテキスト内の要素Valueのを抽出することです。Item Number Type

<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

最近の Excel を使用している場合は、FILTERXMLXpath クエリを実行するために使用できる可能性があります。

おそらく、XML のようなテキストをルート要素でラップして、有効な XML にする必要があるでしょう。

何かのようなもの:

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

関連情報