Como posso tornar esta fórmula de extração de substring mais eficiente e fácil de ler?

Como posso tornar esta fórmula de extração de substring mais eficiente e fácil de ler?

A tarefa da minha fórmula é extrair o Valueelemento Item Number Typeno seguinte texto semelhante a XML:

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

"None" é a substring desejada. Prepare-se para uma fórmula verdadeiramente terrível:

=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))

Essa fórmula funciona. Sem variáveis ​​(ou seja, a capacidade de armazenar o índice inicial da substring que é usado 3 vezes), não sei como realizar o que preciso de uma maneira mais limpa e eficiente, e você?

Responder1

Supondo que você esteja usando um Excel recente, você poderá usá-lo FILTERXMLpara executar uma consulta Xpath.

Você provavelmente precisará transformar o texto semelhante a XML em XML válido, envolvendo-o também em um elemento raiz.

Algo como:

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

informação relacionada