Eu tive esse problema antes, mas enquanto recriava seu exemplo, tudo estava funcionando bem, então tinha que haver alguma coisa. Acho que posso ter encontrado:
Ao selecionar intervalos externos, o Excel às vezes tem a tendência de revertê-los para grandes referências como esta:
=VLOOKUP(1,[Workbook1.xlsx]Sheet1!$A$4:[Workbook1.xlsx]Sheet1!$A$10,1,TRUE)
Isso funciona bem enquanto duas pastas de trabalho estão abertas, mas realmente não há necessidade de especificar a origem nas duas vezes no intervalo, então pode muito bem ser reduzido para isso:
=VLOOKUP(1,[Workbook1.xlsx]Sheet1!$A$1:$A$10,1,TRUE)
Ainda melhor, você também pode usar intervalos nomeados:
=VLOOKUP(1,[Workbook1.xlsx]Sheet1!MyRange,1,TRUE)
Surpresa, surpresa! Se o Workbook2 for aberto sozinho, o formulário longo mostrará #REF, enquanto a versão mais curta e a versão do intervalo nomeado serão atualizadas corretamente.