Tengo una lista de activos y atributos de equipos que es un volcado de datos sin procesar de una base de datos. Entre atributos como el estado del equipo (como en funcionamiento, en espera, etc.) o el nivel de aceite, también incluye elementos como encabezados y marcadores de posición como una línea de registro separada. Entonces eso es con lo que estoy trabajando en términos de datos.
Lo que me gustaría hacer con estos datos es completar otra hoja con esa información seleccionándola en función de una línea de texto parcial, entre otros criterios. Aquí hay una muestra de lo que contendría una celda que estoy revisando.
"\Hierarchy\P2 PROCESS DE-OIL\DE-OIL\DE-OILING D\BU-1002\P-1866A"
Lo que estaría comprobando sería la parte "DESACEITADO D" de esa línea de texto. Esto puede incluir cientos de registros y, al extraer los registros con solo ese texto parcial, no extraeré los otros cientos de registros que no necesito.
Ahora espero que esto sea posible con una función. Sé que puedo contar el número de estos registros que están en esa lista de datos con una COUNTSIF
declaración (Esta fórmula me funciona "=COUNTIF('DBASE SHEET'!B:B,A4)"). Entonces sé que se puede detectar, pero por mi vida no puedo encontrar la manera de extraer los otros campos de datos verificando el texto "De-Oiling D" como argumento condicional y luego hacer referencia a los otros datos según ese criterio.
He probado index()
, indirect()
y vlookup()
es algo completamente diferente o tal vez una combinación de estas funciones. De cualquier manera, parece que no puedo hacer que la fórmula funcione.
Ahora aquí está la otra arruga. Una vez que haya detectado dicho registro que quiero pasar a la nueva hoja de trabajo, quiero poder crear una lista de los nuevos datos pero sin un montón de líneas en blanco.
Muestra de registro utilizando |
como separadores de celdas:
|\Hierarchy\P2 PROCESS DE-OIL\DE-OIL\DE-OILING C\P-1370 | NULL |
|\Hierarchy\P2 PROCESS DE-OIL\DE-OIL\DE-OILING C\P-1370 | RUNNING STATUS |
|\Hierarchy\P2 PROCESS DE-OIL\DE-OIL\DE-OILING C\P-1370 | OIL LEVEL |
|\Hierarchy\P2 PROCESS DE-OIL\DE-OIL\DE-OILING C\P-1370 | SUCTION PRESSURE|
|\Hierarchy\P2 PROCESS DE-OIL\DE-OIL\DE-OILING D\P-1470 | NULL |
|\Hierarchy\P2 PROCESS DE-OIL\DE-OIL\DE-OILING D\P-1470 | RUNNING STATUS |
|\Hierarchy\P2 PROCESS DE-OIL\DE-OIL\DE-OILING D\P-1470 | OIL LEVEL |
|\Hierarchy\P2 PROCESS DE-OIL\DE-OIL\DE-OILING D\P-1570 | NULL |
|\Hierarchy\P2 PROCESS DE-OIL\DE-OIL\DE-OILING D\P-1570 | RUNNING STATUS |
|\Hierarchy\P2 PROCESS DE-OIL\DE-OIL\DE-OILING D\P-1570 | OIL LEVEL |
Lo que me gustaría tener como resultado es lo siguiente sin espacios ni nada de eso:
|DE-OILING C | P-1370 | RUNNING STATUS |
|DE-OILING C | P-1370 | OIL LEVEL |
|DE-OILING C | P-1370 | SUCTION PRESSURE|
|DE-OILING D | P-1470 | RUNNING STATUS |
|DE-OILING D | P-1470 | OIL LEVEL |
|DE-OILING D | P-1570 | RUNNING STATUS |
|DE-OILING D | P-1570 | OIL LEVEL |
Respuesta1
Estás en el camino correcto al considerar la declaración COUNTIFS(). Trate la cadena de texto como lo haría al comparar números, usando los calificadores > y < para comprobar si cada cadena comienza con la sección que está buscando.
=COUNTIFS('DBASE SHEET'!B:B,">"&A4,'DBASE SHEET'!B:B,"<"&A5)
donde A4 contiene tu
"\Hierarchy\P2 PROCESS DE-OIL\DE-OIL\DE-OILING D"
y A5 contiene
"\Hierarchy\P2 PROCESS DE-OIL\DE-OIL\DE-OILING E"
Si necesita una fórmula dinámica para completar automáticamente A5, intente
=LEFT(A4,LEN(A4)-1)&CHAR(CODE(RIGHT(A4,1))+1)