Tenho uma função simples: {=B2*C2 \# "-#.##0,00"}
em uma tabela no Word. No entanto, isso dá o resultado como 2.345,67
, porque eu moro na Holanda. Agora preciso compartilhar este documento com colegas ingleses e quero que a formatação de tais fórmulas (tenho muitas) mostre como 2,345.67
, ou seja, British ou US Locale. Posso fazer isso usando {=B2*C2 \# "-#.##0,00"}
, mas preciso manter duas versões do documento e atualizar cada campo.
Eu prefiro ser capaz de definir a localidade de alguma forma central, mas definir a localidade para o documento, ou através de revisores, não ajuda, e esta sugestão , ou seja, usar locale como \l 2057
para inglês, dá um erro de sintaxe.
Posso alterar claramente a string de formatação manualmente, embora prefira usar a configuração de idioma. O mesmo não se aplica aos campos que estão sendo lidos: se eu alterar o campo B2
para usar pontos para decimal em vez de vírgulas, ele não calcula corretamente.
Alterar a localidade de todo o computador ajudou, mas essa não é uma solução de longo prazo.
Existem vários problemas nesta área e nenhum deles é particularmente fácil de resolver.
Em alguns aspectos, o problema principal não é aquele que você realmente descreve, ou seja, que a formatação não funciona, mas o problema que quando um usuário digita um número na tabela, ele é "corrigido", ou seja, depois que você digita
não há um mecanismo completamente confiável no Word para mudar isso para
e o Word reconhecerá o número de forma diferente dependendo se o painel de controle do Windows tem o caractere de ponto decimal definido como "." ou ",".
Se você estiver criando um documento sem esses valores (apenas células vazias) e enviar o "formulário" para um usuário dos EUA/Reino Unido que digitará os valores e só então será usado pelo Reino Unido/EUA usuários, há algumas coisas que você pode fazer.
Caso contrário, AFAIK, você terá que forçar as pessoas a inserir os dados de uma maneira muito não natural ou você terá que quando um usuário digitar 1234.56, ou você terá que facilitar a conversão de todos os números para o formato da outra cultura. Na sua forma mais simples, você pode usar um curinga localizar/substituir para substituir algo como
para
(ou o contrário), assumindo que isso não modificará nenhuma outra coisa que pareça números. E você provavelmente precisaria envolver isso em uma macro VBA.
Quanto às opções de formatação, a única maneira realmente confiável de lidar com isso é não usá-las e confiar completamente em como o Word formata os números por padrão. (FWIW, quando as pessoas colocam espaços reservados "#" em formatos numéricos do Word, às vezes é porque eles vêm de um plano de fundo do Excel e não perceberam que simplesmente não precisam deles).
No entanto, se você tiver que usar formatos numéricos, o que você precisa fazer é obter os caracteres corretos de "ponto decimal" e "separador de milhares" no formato. E com isso quero dizer os mesmos caracteres usados no painel de controle do Windows na máquina onde o documento está sendo editado.
Não há uma maneira interna totalmente confiável de fazer isso usando campos. Você pode usar o VBA para obter os caracteres relevantes do Windows. Como alternativa, você pode tentar "fingir" usando alguns campos aninhados nas seguintes linhas:
(lembre-se de que todos os {} devem ser os pares de chaves de código de campo especiais que você pode inserir usando ctrl-F9 no Word da área de trabalho do Windows)
então, em vez de
você usa
Alternativamente, você pode definir seus formatos no início do documento, por exemplo
então use
Obviamente, essa abordagem, conforme declarada, não lidará com uma localidade arbitrária (por exemplo, algumas localidades usam um caractere de espaço sem quebra como separador de milhares) ou configurações incomuns no painel de controle, mas podem ser suficientes para NL/US/UK.
Infelizmente, esse é o problema "fácil" de resolver. Se o que você realmente quer é consertar tudo para que todos os seus usuários (NL/UK/US) entrem e vejam a mesma formatação, independentemente das configurações do Windows, esse é realmente um problema muito mais difícil de resolver. Suponha que você decida que todos devem entrar e ver o formato dos EUA, por exemplo
1,234,567.89
O problema é que o Word não reconhecerá "1234.56" corretamente em um sistema configurado com configurações NL típicas. As únicas coisas que você poderia fazer (IMO) para lidar com isso seria ...
uma. evitar quaisquer dados inseridos pelo usuário ou restringir os usuários a inserir apenas dados de números inteiros
b. modificar temporariamente as configurações relevantes do Windows no sistema do usuário, talvez usando VBA, se isso não for descartado por restrições de segurança.
Não tenho certeza se vale a pena tentar fornecer uma solução para qualquer uma dessas opções.
No entanto, talvez valha a pena listar algumas das coisas que uma solução de propósito geral para esse problema pode ter que levar em consideração, como segue:
O problema básico é que a formatação numérica do Word depende principalmente das configurações em Configurações do Windows/Painel de controle. Na verdade, a implementação do Word é tão antiga que apenas respeita algumas dessas configurações. Por exemplo, ele fará agrupamento de dígitos em grupos de três, independentemente do que você definir no painel de controle. Como você já descobriu, você não pode influenciar a exibição numérica usando uma opção de idioma como
\l 2057
ou aplicando um idioma de revisão (que na verdade funciona até certo ponto com datas. Mesmo se você pudesse aplicar um idioma de revisão, você ainda teria que descobrir como mudá-lo.As versões desktop e online do Word se comportam de forma diferente. AFAICS no momento em que a versão web do Word deixa os resultados do campo como estão, independentemente de quaisquer configurações de localidade. É claro que isso pode mudar com o tempo e as versões de "dispositivo" do Word podem se comportar de maneira diferente. A versão do Mac Desktop se comporta da mesma maneira que a versão do Windows, mas modificar as configurações do Mac exigiria um código diferente da versão do Windows.
Não há apenas um problema de "formato". Há também um problema de "como você digita seus números" e um problema de "reconhecimento".
Não há convenção na string de formato numérico que permita substituir os valores no painel de controle do Windows ou até mesmo especificar que você deseja usar o valor especificado no painel de controle do Windows.
O que quero dizer com substituição é que você não pode fazer algo como
então o Word sempre usaria "." como o ponto decimal, independentemente das configurações do Windows.
O que quero dizer com "usar o valor especificado no painel de controle do Windows" é o seguinte: Quando você digita um formato como
então, se "," for realmente o caractere de ponto decimal nas configurações do Windows, a string de formato inteira não poderá se comportar como você esperava.
você provavelmente realmente quer usar algo como
onde o Word realmente pega o valor de e do Painel de Controle do Windows.
Além de recorrer ao VBA, não há nada no Word que permita descobrir com segurança os valores atuais do caractere separador de milhares, caractere de ponto decimal (ou cadeia de caracteres de moeda)
(provavelmente não é relevante no seu caso, mas vale a pena mencionar por completo) Se você usar metadados do SharePoint para inserir valores numéricos por meio de controles de conteúdo, acabará tendo que trabalhar com o "." convenção para pontos decimais porque essa é a convenção que XML usa e o Word não ajuda você a superá-la.
Em strings de formato numérico, o "caractere separador de milhares" não é posicional. por exemplo, na convenção dos EUA/Reino Unido, a formatação
1000000
com\#",0"
dá a você1,000,000
, não100000,0
Se você também precisar inserir/formatar dados de moeda, as configurações de adição se aplicam. Se você tiver um documento com dados em duas ou mais moedas diferentes, terá que aceitar que o Word só reconhecerá uma delas como moeda.
O Word obtém o valor de outro caractere especial do painel de controle do Windows - o caractere separador de lista. Geralmente é "," ou ";". Se você tem fórmulas que usam funções com parâmetros, você precisa usar o separador correto. (Você também pode precisar usar o separador correto em outros tipos de campo, como TOC e EQ).
Tentar detectar ou avaliar os valores dos três caracteres variáveis (ponto decimal, separador de agrupamento de dígitos, separador de lista) usando codificação de campo é, suspeito, praticamente impossível no caso geral. Mesmo a abordagem sugerida acima pode resultar em um erro de sintaxe, principalmente se você estiver fazendo uma mala direta onde o Word pode sinalizar um erro de sintaxe que não causa um problema em um documento normal.