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çãoINDIRECTnã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
.xlsme 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.)