Depois de muita dificuldade, descobri algo que funciona, embora use duas colunas de trabalho (que obviamente ficarão ocultas antes de a planilha ser usada).
Testei com o Excel 2007, que mostra 0
em vez de uma célula em branco quando index()
ou indirect()
retorna uma célula em branco: eu poderia removê-los com formatação condicional, mas os deixei de forma que não para obscurecer como as fórmulas estão funcionando: -
Euuseiseusdadosdeteste,entãoafórmulacopiadadeD5
é:
=INDEX($A$5:$B$8,MOD(ROW()-ROW($A$5),ROWS($A$5:$B$8))+1,INT((ROW()-ROW($A$5))/ROWS($A$5:$B$8))+1)
ColunaD
agoraéusadacomocolunadetrabalhoeoutracolunadetrabalhoF
écriada,comF5
contendo:
=MATCH("*",$D$5:$D$12,0)+ROW()-1
e copiado de F6
:
=MATCH("*",INDIRECT(ADDRESS(F5+1,4,1)&":$D$12"),0)+F5
Os pontos significativos aqui são:
- Wild cards podem ser usados quando o terceiro parâmetro de
MATCH()
é zero (não ordenado). -
"*"
corresponde a qualquer coisa, mas não a0
retornada porINDEX()
para uma célula em branco.
Finalmente, H5
copiado é:
=IFERROR(INDIRECT("$D"&F5),"")
Aqui IFERROR()
é usado para capturar as entradas #N/A
na coluna F
após a última entrada encontrada.
Depois de esconder as colunas de trabalho, você consegue o que queria: -
Observe que, para evitar a interrupção da sequência da coluna ao vivo, as colunas de trabalho podem estar fora da área da folha principal (por exemplo, Y
e Z
) ou em uma folha separada, embora isso complique as fórmulas mais com referências de folha.
Além disso, pode ser possível usar apenas uma coluna de trabalho, mas as fórmulas seriam de grande complexidade, tornando o suporte muito difícil.
Note também que suas fórmulas podem ser consideradas desnecessariamente complicadas, por exemplo, ROW($A$201)
é sempre 201 e ROWS($A$101:$F$200)
é sempre 100; em ambos os casos, é porque o endereçamento absoluto foi usado - ROW()
e ROWS()
se tornam úteis quando as células que usam endereçamento relativo são copiadas.