¿Cómo puedo hacer que esta fórmula de extracción de subcadenas sea más eficiente y más fácil de leer?

¿Cómo puedo hacer que esta fórmula de extracción de subcadenas sea más eficiente y más fácil de leer?

La tarea de mi fórmula es extraer el Valueelemento Item Number Typeen el siguiente texto similar a XML:

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

"Ninguno" es la subcadena deseada. Prepárate para una fórmula realmente terrible:

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

Esa fórmula funciona. Sin variables (es decir, la capacidad de almacenar el índice de inicio de la subcadena que se usa 3 veces) no sé cómo lograr lo que necesito de una manera más limpia y eficiente, ¿y tú?

Respuesta1

Suponiendo que está utilizando un Excel reciente, es posible que pueda utilizarlo FILTERXMLpara ejecutar una consulta XPath.

Probablemente necesitará convertir el texto similar a XML en XML válido envolviéndolo también en un elemento raíz.

Algo como:

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

información relacionada