He estado luchando con lo siguiente; podría ser un desafío.
Tengo un archivo de Excel que se exportó desde una aplicación XML.
Hoja 1contiene filas de cadenas como las siguientes. Cada fila impar tiene aproximadamente 10 de esas cadenas, pero esto puede variar. (Estoy buscando una solución para completar las filas pares; ver más abajo).
Hoja 2, Columna A, contiene una variedad de cadenas como Measurement_1
, Ref_No
y Maximum_Velocity
, llamadasAtributos.
Necesito buscar cada uno de estos atributos en cada celda de cada fila impar deHoja 1y pega cadaúnicoatributo que aparece como una subcadena en estas cadenas en una nueva fila debajo, cada una en una celda propia.
Tenga en cuenta que cada valor de las filas generadas debe ser único.
¿Existe alguna función, expresión regular o script VBA que pueda hacer eso? He buscado extensamente en los foros y en otros lugares y no pude hacerlo yo mismo.
Espero que todo esto tenga sentido, ¡pero estoy feliz de explicar cualquier galimatías!
Fila 1
Cell A1:
<ref attrid="Measurement_1" equalsign="=" includeattrname="false" resolveto="valueandunit" separator=""><ref attrid="Measurement_1" equalsign="=" includeattrname="false" resolveto="valueandunit" separator=" - "></ref></ref>
Cell B1:
"<ref attrid="Ref_No" equalsign="=" includeattrname="false" resolveto="valueandunit" separator=""><ref attrid="Unit" equalsign="=" includeattrname="false" resolveto="valueandunit" separator=" "><ref attrid="Vector" equalsign="=" includeattrname="false" resolveto="value" separator=" (Dia)"><ref attrid="Object_Diameter" equalsign="=" includeattrname="false" resolveto="unit" separator=""><ref attrid="Thread_Size" equalsign="=" includeattrname="false" resolveto="valueandunit" separator=","><ref attrid="Object_Length" equalsign="=" includeattrname="false" resolveto="value" separator=" "><ref attrid="Object_Length" equalsign="=" includeattrname="false" resolveto="value" separator=" of ">"
Cell C1:
CONCATENATE("This ", LOWER(VAL("Device_Type")),F(AND(EXACT(VAL("Max_Temperature_Range"),("")),EXACT(VAL("Min_Temperature_Range"),"")),".",CONCATENATE("appeared to operate safely from a minimum temperature of ", VAL("Min_Temperature_Range"),UNIT("Min_Temperature_Range")," to a maximum temperature of ", VAL("Max_Temperature_Range"),UNIT("Max_Temperature_Range"),".")))
La salida deseada enFila 2se vería así:
Cell A2:Measurement_1
Cell B2:Ref_No
Cell C2:Object_Diameter
Cell D2:Object_Length
Cell E2:Device_Type
Cell F2:Max_Temperature_Range
Cell G2:Min_Temperature_Range
Respuesta1
Sus cadenas XML parecen extrañas: ¿muchas etiquetas incompletas?
De todos modos, comenzaría desde el archivo XML y lo cargaría usando el complemento Power Query. Tiene un controlador "Desde XML" específico y puede dar forma fácilmente a los datos a lo largo del camino utilizando los comandos de Power Query.
Aquí hay un ejemplo que creé usando una versión editada de su contenido XML (agregué un elemento raíz y etiquetas de cierre para convertirlo en un archivo XML válido).
La única acción que parecía necesaria para lograr lo que deseaba era seleccionar la columna Atributo:attrid y elegir Eliminar columnas/Eliminar otras columnas.
Puedes ver el resultado en el fondo: una tabla de Excel. Cada vez que el archivo XML cambia, simplemente presione Actualizar para volver a ejecutar Power Query.