Use o nome da planilha como variável em uma pesquisa [duplicada]

0

Eu tenho 2 pastas de trabalho com mais de 60 planilhas. Eu preciso copiar dados de uma pasta de trabalho para o outro, mas gostaria de capturar e usar o nome da planilha dentro da célula. Isso porque, quando eu crio a pasta de trabalho, faço uma planilha mestre e, em seguida, copio-a mais de 60 vezes. O acima faria a célula ref para cada planilha a célula da planilha correspondente no outro arquivo.

    
por Stuart 21.10.2013 / 15:00

1 resposta

0

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
    
por 23.10.2013 / 00:49