No Excel, digite Alt + F11 para abrir a janela do Visual Basic.
À esquerda, clique com o botão direito do mouse no nome da sua planilha e Insert
→ Module
.
Uma sub-janela Module1 - Code
será aberta à direita. Insira o seguinte nessa janela:
Function SHEET_NUM()
SHEET_NUM = Application.Caller.Parent.Index
End Function
Agora volte para a planilha. Apenas por diversão, para ver como isso funciona, digite =SHEET_NUM()
em qualquer célula. Ele deve exibir o número da planilha em que está. Então, entre
=INDIRECT("[sub.xlsx]Sheet1!$B$" & (SHEET_NUM()+1))
na célula H4
em cada folha. A subexpressão SHEET_NUM()+1
será avaliada como 2
em Sheet1
, 3
em Sheet2
, etc… - em outras palavras, o número da linha que você deseja em sua referência.
&
é o operador de concatenação; ele combinará a string constante "[sub.xlsx]Sheet1!$B$"
com o número da linha computada, resultando na referência que você deseja.
A função INDIRECT
usa uma string parecida com uma referência e desmarca-a; isto é, ele busca o valor que é referenciado.
Alguns avisos:
- Se você estiver lidando com uma pasta de trabalho (
stu.xlsx
) fazendo referência a outra (sub.xlsx
), você precisará ter o segundo livro aberto sempre que trabalhar com o primeiro livro –– embora o Excel possa fazer referência a dados em um livro fechado, a funçãoINDIRECT
não pode. Se isso for um problema, você pode fazer uma manobra Copiar e Colar Valores. - Você precisará salvar sua pasta de trabalho como um arquivo
.xlsm
e ativar as macros toda vez que abri-la. (Ou faça a manobra Copiar e Colar Valores acima). - AFAICT, as planilhas recebem um número quando são criadas e é difícil mudar. Em particular, se você mover suas planilhas, elas manterão seus números originais , o que será confuso. (Mas, por outro lado, você pode renomeá-los sem se preocupar em mudar seus números.)