Eu tenho uma lista de ativos e atributos de equipamentos que é um despejo de dados brutos de um banco de dados. Entre atributos como status do equipamento (como em funcionamento, em espera, etc.) ou nível de óleo, ele também inclui itens como cabeçalhos e marcadores de posição como linha de registro separada. Então é com isso que estou trabalhando em termos de dados.
O que eu gostaria de fazer com esses dados é preencher outra planilha com essas informações, selecionando-as com base em uma linha de texto parcial, entre outros critérios. Aqui está um exemplo do que uma célula que estou verificando conteria.
"\Hierarchy\P2 PROCESS DE-OIL\DE-OIL\DE-OILING D\BU-1002\P-1866A"
O que eu verificaria seria a parte "DE-OILING D" dessa linha de texto. Isso pode incluir centenas de registros e, ao extrair os registros apenas com aquele texto parcial, não extrairei as outras centenas de registros que não preciso.
Agora espero que isso seja possível com uma função. Eu sei que posso contar o número desses registros que estão nessa lista de dados com uma COUNTSIF
instrução (esta fórmula funciona para mim "=COUNTIF('DBASE SHEET'!B:B,A4)"). Então, eu sei que isso pode ser detectado, mas não consigo descobrir como extrair os outros campos de dados verificando o texto "De-Oiling D" como o argumento condicional e depois referenciar os outros dados com base em esse critério.
Eu tentei index()
, indirect()
e vlookup()
é algo completamente diferente ou talvez uma combinação dessas funções. De qualquer forma, não consigo fazer a fórmula funcionar.
Agora aqui está a outra ruga. Depois de detectar o registro que desejo transferir para a nova planilha, quero poder criar uma lista dos novos dados, mas sem um monte de linhas em branco.
Registre a amostra usando |
como separadores de células:
|\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 |
O que eu gostaria de ter como saída é o seguinte, sem espaços ou qualquer coisa assim:
|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 |
Responder1
Você está no caminho certo ao considerar a instrução COUNTIFS(). Trate a sequência de texto como faria ao comparar números, usando os qualificadores > e < para verificar se cada sequência começa com a seção que você está procurando.
=COUNTIFS('DBASE SHEET'!B:B,">"&A4,'DBASE SHEET'!B:B,"<"&A5)
onde A4 contém seu
"\Hierarchy\P2 PROCESS DE-OIL\DE-OIL\DE-OILING D"
e A5 contém
"\Hierarchy\P2 PROCESS DE-OIL\DE-OIL\DE-OILING E"
Se você precisar de uma fórmula dinâmica para preencher automaticamente A5, tente
=LEFT(A4,LEN(A4)-1)&CHAR(CODE(RIGHT(A4,1))+1)