
Eu tenho dados como:
Eu preciso localizar(obter números de linha)para células que começam com a letraA.
Minha abordagem atual é usar uma coluna "auxiliar". EmB1Eu entro:
=IF(LEFT(A1)="A",1,"")
e emB2Eu entro:
=IF(LEFT(A2)="A",MAX($B$1:B1)+1,"")
e copie. Isso identifica as linhas de interesse. Finalmente emC1Eu uso:
=IFERROR(MATCH(ROWS($1:1),$B$1:$B$23,0),"")
e copie.
Meu objetivo é eliminar a coluna “ajudante”.
As únicas duas opções que vejo são:
- use um filtro automático
- usar um VBAUDF
A abordagem do filtro automático é ruim porque o filtro teria que ser executado novamente sempre que os dados fossem atualizados. OUDFabordagem ruim porque a planilha deve funcionar em um ambiente livre de VBA.
Existe algum tipo de fórmula ou fórmula de matriz que possa obter os números das linhas ou estou preso à coluna "auxiliar"?
Responder1
Tente isto inserido como uma fórmula de matriz com Ctrl+ Shift+ Enter:
{=SMALL(IF(LEFT($A$1:$A$23)="A",ROW($A$1:$A$23),9E+99),ROW())}
Presumo que seus critérios sejam mais complicados do que em sua aplicação real. Você pode substituir o LEFT($A$1:$A$23)="A"
por qualquer critério que desejar e ainda funcionará.
Observe que isso retornará 9E+99
se você copiá-lo para mais linhas do que as que começam com "A". Você pode ajustá-lo para retornar em branco:
{=IFERROR(SMALL(IF(LEFT($A$1:$A$14)="A",ROW($A$1:$A$14),""),ROW()),"")}
Responder2
Tente isto:
coloque 0 em C1.
De C2: =match(indirect("a"&c1+1&":a<last row>",true),"a*",0)+C1
Notas: A correspondência não diferencia maiúsculas de minúsculas. Você precisa gerenciar os erros depois de perguntar se as correspondências foram encontradas.