A principal questão que você enfrenta agora é a referência circular.
VLOOKUP não é um relacionamento A = B
, mas sim mais um relacionamento if A then B
(onde A e B são matrizes de valores como no seu caso). Em outras palavras, é um direcional e A não depende de B. Pelo que vejo, não acho que o Excel tenha uma maneira direta de manipular uma referência circular usando a interface do usuário, pois a fórmula não pode ser armazenada. no backend (a menos que você use uma macro).
Uma maneira é ter valores relativos em A e B e uma terceira folha (ou muitas colunas extras) para fazer algumas células condicionais, e. A planilha contém valor relativo (que pode ser um novo valor atualizado em B ou um valor original em C), a planilha C contém valores originais e a planilha B mantém as células para refletir valores E atualizar valores.
Na Folha B, crie uma nova coluna para cada coluna referenciada. Esta será a coluna de valores de atualização. Na Folha C, armazene seus valores originais. Na Folha A, use uma condição que diga "se o campo de valores de atualização na Folha B tiver um valor, use-o, else, consulte a Folha C". A coluna de valores de reflexão da Folha B ainda fará referência a partir da Folha A, de modo que ela será alterada dinamicamente se a coluna de atualização tiver novos valores. Note que isso não está realmente resolvendo o problema de referência circular, mas apenas contornando-o.
No entanto, se você precisar que a Folha A seja valores fixos e não valores relativos, será necessário copiar e paste as value
ou usar algo como:
ActiveSheet.Range("A1:D1000").Value = ActiveSheet.Range("A1:D1000").Value
no VB para converter valores relativos (com fórmulas) para valores fixos.