it-swarm.dev

Forçar a fórmula da folha do google para recalcular

Eu tenho uma fórmula de índice/correspondência que corresponde a um arquivo específico com base no valor de data de determinadas células. Aqui está a fórmula:

=IFERROR(INDEX(INDIRECT("'"&TEXT($O$3,"mm-dd-yyyy")&"'!"&"$D3:$D$500"),MATCH($D5,INDIRECT("'" & TEXT($O$3, "mm-dd-yyyy") &"'!$B$3:$B500"),0)),0)

Percebi que os valores não foram alterados mesmo quando importei um novo CSV. A única maneira de obter os valores a serem atualizados foi essencialmente redigitar a fórmula arrastando de cima para a última célula, como faria manualmente.

Eu tentei alterar o tempo de recálculo em configurações, mas parecia que a configuração não se aplica à minha fórmula, como eu definir a cada minuto e nada aconteceu. 

Pensei em escrever um script para que ele pudesse inserir novamente as fórmulas e configurá-lo para ser executado todos os dias, mas espero que haja uma maneira mais fácil de fazer isso.

7
Sean W

Resposta curta

Sua fórmula não está sendo recalculada porque seus argumentos não mudam. A solução é, como você já descobriu sozinho, inserir novamente os argumentos apropriados nas células às quais sua fórmula faz referência.

Explicação

As fórmulas do Google Sheets são recalculadas quando

  1. A planilha está aberta
  2. Os argumentos da função são alterados
  3. As funções NOW, TODAY, Rand e RANDBETWEEN são atualizadas de acordo com as configurações da planilha, na alteração, na alteração e a cada minuto, na alteração e a cada hora
  4. As funções de dados externos são recalculadas nos seguintes intervalos:
    • ImportRange: 30 minutos
    • ImportHtml, ImportFeed, ImportData, ImportXml: 1 hora
    • GoogleFinance: pode demorar até 20 minutos

Nota: Algumas funções e funções customizadas não permitem funções determinísticas como argumentos.

Referências

13
Rubén

Eu encontrei uma solução fácil para o meu problema. Escrevi um script para redigitar essencialmente as datas corretas em células às quais minha fórmula faz referência e as fórmulas atualizadas. 

2
Sean W

Aqui está outra solução, embora uma que seja computacionalmente cara: passe o intervalo a ser considerado no cálculo para a função. Dessa forma, sempre que um valor for alterado no intervalo transmitido ou o próprio intervalo for alterado (como inserir uma linha no intervalo), a fórmula será recalculada.

0
Jesse Heines