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