A questão
Suponho que você tenha duas pastas de trabalho (por exemplo, arquivos de planilha do Microsoft Excel .xls );
vamos chamá-los de Master.xls e Book2.xls . E [Master.xls]Sheet1 contém
A B C
1 =[Book2.xls]Sheet1!A1 =[Book2.xls]Sheet1!B1 =[Book2.xls]Sheet1!C1 ...
2 =[Book2.xls]Sheet1!A2 =[Book2.xls]Sheet1!B2 =[Book2.xls]Sheet1!C2 ...
e o problema é que,
quando você cria [Master.xls]Sheet2 como uma cópia de [Master.xls]Sheet1 , também obtém
A B C
1 =[Book2.xls]Sheet1!A1 =[Book2.xls]Sheet1!B1 =[Book2.xls]Sheet1!C1 ...
2 =[Book2.xls]Sheet1!A2 =[Book2.xls]Sheet1!B2 =[Book2.xls]Sheet1!C2 ...
mas você deseja que as células em [Master.xls]Sheet2 façam referência a [Book2.xls]Sheet2 em vez de [Book2.xls]Sheet1 .
A resposta
Estabelecer uma "célula auxiliar"; digamos Z1 - em algum lugar que esteja fora do caminho.
(Você não realmente precisa ter essa "célula auxiliar",
mas as coisas serão muito mais confusas se você não fizer isso.
Preencha com uma fórmula que avalie o nome da planilha atual, conforme documentado em
É possível obter o nome da planilha? , como
=MID(CELL("filename"), FIND("]",CELL("filename"))+1, 256)
Em seguida, defina as células em Master.xls para
=INDIRECT("[Book2.xls]" & $Z$1 & "!R" & ROW() & "C" & COLUMN(), FALSE)
Explicação
[Master.xls]Sheet42!Z1 é avaliado como Sheet42 , portanto,
em todas as células em [Master.xls]Sheet42 ,
os dois primeiros termos do primeiro argumento para INDIRECT
irá avaliar para [Book2.xls]Sheet42 .
E, na célula S17 (por exemplo) de qualquer folha,
ROW() será avaliado como 17 e COLUMN() será avaliado como 19 ,
e assim os últimos quatro termos somam !R17C19 .
Junte tudo e você tem
=INDIRECT("[Book2.xls]Sheet42!R17C19", FALSE)
Quando o segundo argumento para INDIRECT é FALSE ,
ele interpreta strings como R17C19 para significar S17 ;
então isso é equivalente a
=INDIRECT("[Book2.xls]Sheet42!S17")
que é equivalente a
=[Book2.xls]Sheet42!S17