Resumo
Uma das maneiras mais fáceis de fazer isso sem o VBA é adicionar 3 "colunas auxiliares" (que você pode até ocultar depois de escritas) ao lado dos dados, como mostrado:
Inserindocolunasauxiliares
Essascolunasauxiliarescolocamumnúmerodeíndiceseovalorforigualaovalordalinha,incrementandoonúmerotodavezqueforencontrado.Então,porexemplo,nomeuexemplomostrado,eucolocoacélulaC2=
=IF(A2="yes",MAX($C$1:C1)+1,"")
Célula D2 =
=IF(A2="no",MAX($D$1:D1)+1,"")
e assim por diante. Arrastar para baixo produz os números de índice.
Coletando dados em novas planilhas
Agora, nas planilhas separadas, fica muito mais simples recuperar cada conjunto de dados.
Então, se sheet2 representa todos os yes's, então na sheet2, eu usaria uma função match e index. Então, a célula A2 na planilha2 seria:
=INDEX(Sheet1!B:B,MATCH(ROW(A2)-1,Sheet1!C:C,0))
Comoissofunciona
AparteMATCH(ROW(A2)-1,Sheet1!C:C,0)estáusandoovalordalinhaatualcomoonúmeroaserpesquisadoeC:Céminha"coluna auxiliar sim" na planilha1. Ao arrastar isso para baixo, o ROW (A2) se torna ROW (A3), depois ROW (A4) e assim por diante. O 0 dentro da MATCH indica que está procurando uma correspondência exata.
A parte INDEX () simplesmente procura uma coluna com base no valor MATCH. No meu caso, procurei a coluna B para recuperar meus dados. Você pode fazer algo semelhante para cada coluna que deseja copiar para a nova planilha, mudando B para a linha da qual você está recuperando.