Uma família de softwares de planilhas da Microsoft com ferramentas para analisar, criar gráficos e comunicar dados.
(Aviso: As informações fornecidas foram traduzidas usando uma ferramenta de tradução automática; embora nos esforcemos para garantir a precisão, as traduções podem nem sempre refletir totalmente o significado, o contexto ou a intenção do conteúdo original.)
Olá, Rafael Avelar
Obrigado por entrar em contato com o fórum de perguntas e respostas da Microsoft.
Lamentamos a situação frustrante que você está enfrentando. O HISTÓRICODEAÇÕES/STOCKHISTORY não é “tempo real”, ele depende de um feed que costuma atualizar só após o fechamento do mercado e pode ficar atrasado, então em certos horários o Excel entende o “HOJE()” como sem negociação mesmo em dia útil.
Aqui estão algumas sugestões que você pode tentar para resolver esse problema:
Garanta que você está pedindo o dado certo (fechamento do dia)
O STOCKHISTORY/HISTÓRICODEAÇÕES retorna histórico em forma de matriz e, por padrão, traz Data + Fechamento. Se você precisa do preço “agora”, use o Tipo de Dados Ações e o campo .Preço (isso costuma atualizar antes do histórico diário).
Em outras palavras: HOJE() pode falhar para o histórico diário, enquanto HOJE()-1 funciona porque já existe fechamento confirmado para o dia anterior. Isso bate com relatos idênticos (usar data de ontem retornando o fechamento mais recente).
Force atualização do feed quando for “hoje”
- No Excel, vá em Dados > Atualizar Tudo (às vezes o valor só aparece depois de um refresh manual).
- Se mesmo assim continuar “Dias sem negociação”, trate como atraso do provedor naquele momento, não como erro da sua planilha.
Use o código da bolsa para evitar ambiguidades
Às vezes “DIS” pode ser interpretado de forma diferente dependendo de região/feed. Prefira informar o identificador do mercado (MIC), por exemplo:
=HISTÓRICODEAÇÕES("XNAS:DIS";HOJE())
A própria documentação recomenda esse formato “MIC:TICKER” para especificar a bolsa.
Em vez de HOJE(), use “último dia útil” para não quebrar
Isso deixa sua planilha estável (não depende do fechamento do dia atual):
=HISTÓRICODEAÇÕES("XNAS:DIS";DIATRABALHO(HOJE();-1))
``
E se você quiser contemplar feriados, mantenha uma lista de feriados em um intervalo (ex.: Feriados!A1:A30) e use:
=HISTÓRICODEAÇÕES("XNAS:DIS";DIATRABALHO(HOJE();-1;Feriados!A1:A30))
A ideia de usar WORKDAY/DIATRABALHO é justamente evitar dias sem pregão (fim de semana/feriado).
Para sua planilha “grande” parar de dar “Excel ficou sem recursos…”
Esse erro costuma aparecer quando há muitas chamadas ao HISTÓRICODEAÇÕES recalculando ao mesmo tempo (especialmente se você espalhou a função por várias linhas/colunas).
- Consolide: faça 1 chamada do HISTÓRICODEAÇÕES em uma aba “Dados” e, nas demais células, referencie o resultado “derramado” (em vez de repetir a função centenas de vezes).
- Reduza recalculo: em Fórmulas > Opções de Cálculo, teste Manual enquanto ajusta (depois volta para Automático).
- Congele quando estiver OK: copie o resultado e Colar Especial > Valores em tabelas que não precisam atualizar toda hora.
Se o erro aparecer “do nada” em vários computadores
Pode ser falha temporária do serviço (já houve incidentes e períodos em que o STOCKHISTORY gerava erros de conexão/retorno). Nesse cenário, o melhor “workaround” é o item 4 (último dia útil) + refresh manual, até o feed normalizar.
Agradecemos sua paciência ao ler e esperamos que essas informações tenham sido úteis para você.
Se a resposta for útil, clique em “Aceitar resposta” e vote positivamente. Se você tiver mais perguntas sobre esta resposta, clique em “Comentar”.
Observação: siga as etapas em nossa documentação para ativar as notificações por e-mail se desejar receber a notificação por e-mail relacionada a este tópico.