Tengo una función simple: {=B2*C2 \# "-#.##0,00"}
en una tabla en Word. Sin embargo, esto da como resultado 2.345,67
, porque vivo en los Países Bajos. Ahora necesito compartir este documento con colegas ingleses y quiero que el formato de dichas fórmulas (tengo muchas) se muestre como 2,345.67
, es decir, configuración regional británica o estadounidense. Puedo hacerlo usando {=B2*C2 \# "-#.##0,00"}
, pero luego necesito mantener dos versiones del documento y actualizar todos y cada uno de los campos.
Prefiero poder configurar la configuración regional de alguna manera centralizada, pero configurar la configuración regional para el documento, o mediante herramientas de revisión, no ayuda, yesta sugerencia, es decir, usar una configuración regional como \l 2057
en inglés, genera un error de sintaxis.
Claramente puedo cambiar la cadena de formato a mano, aunque prefiero usar la configuración de idioma. Lo mismo no se aplica a los campos que se leen: si cambio el campo B2
para usar puntos como decimal en lugar de comas, no se calcula correctamente.
Cambiar la configuración regional de toda la computadora ayudó, pero no es una solución a largo plazo.
Respuesta1
Hay varios problemas en esta área y ninguno de ellos es particularmente fácil de resolver.
En algunos aspectos, el problema principal no es el que usted realmente describe, es decir, que el formato no funciona, sino el problema de que cuando un usuario escribe un número en la tabla, se "soluciona", es decir, después de haber escrito
1234,56
No existe un mecanismo completamente confiable en Word para cambiar eso a
1234.56
y Word reconocerá el número de manera diferente dependiendo de si el panel de control de Windows tiene el carácter de punto decimal configurado como "." o ",".
Si está creando un documento sin dichos valores (solo celdas vacías)yvas a enviar el "formulario" a un usuario de EE. UU./Reino Unido que escribirá los valoresySólo entonces será utilizado por usuarios del Reino Unido y EE. UU., hay un par de cosas que puedes hacer.
De lo contrario, AFAIK, tienes que obligar a las personas a ingresar los datos de una manera muy poco natural o lo tienes que hacer una vez que un usuario ha escrito 1234.56, o tienes que facilitar la conversión de todos los números al formato de la otra cultura. En su forma más simple, puede usar un comodín buscar/reemplazar para reemplazar algo como
([0-9]),([0-9])
a
\1.\2
(o al revés), asumiendo que eso no modificará ninguna otra cosa que parezca números. Y probablemente necesites incluir eso en una macro de VBA.
En cuanto a los modificadores de formato, la única forma realmente confiable de solucionarlos es no usarlos y confiar completamente en cómo Word formatea los números de forma predeterminada. (FWIW, cuando las personas colocan marcadores de posición "#" en formatos numéricos de Word, a veces es porque provienen de Excel y no se han dado cuenta de que simplemente no los necesitan).
Sin embargo, si tiene que utilizar formatos numéricos, lo que debe hacer es introducir los caracteres correctos de "punto decimal" y "separador de miles" en el formato. Y con esto me refiero a los mismos caracteres que se utilizan en el panel de control de Windows en la máquina donde se edita el documento.
No existe una forma integrada completamente confiable de hacerlo utilizando campos. Podrías usar VBA para obtener los caracteres relevantes de Windows. Alternativamente, puedes intentar "fingir" usando algunos campos anidados como los siguientes:
{ IF 1/2 = 0,5 "{ SET POINT "," }{ SET GROUP "." }" "{ SET POINT "." }{ SET GROUP "," }" }
(recuerda esotodo{} tienen que ser los pares de llaves de código de campo especiales que puede insertar usando Ctrl-F9 en el escritorio de Windows Word)
entonces, en lugar de
{=B2*C2 \# "-#.##0,00"}
tu usas
{=B2*C2 \# "-#{ GROUP }##0{ POINT }00"}
Alternativamente, puede definir sus formatos al principio del documento, por ejemplo
{ SET FORMAT1 "-#{ GROUP }##0{ POINT }00" }
entonces usa
{=B2*C2 \# "{ FORMAT1 }"}
Obviamente, este enfoque, como se indicó, no se ocupará de una configuración regional arbitraria (por ejemplo, algunas configuraciones regionales usan un carácter de espacio continuo como separador de miles) o configuraciones inusuales en el panel de control, pero pueden ser suficientes para NL/US/UK.
Desafortunadamente, ese es el problema "fácil" de resolver. Si lo que realmente quieres es arreglar todo para que todos tus usuarios (NL/UK/US) entren y vean el mismo formato, independientemente de su configuración de Windows, en realidad ese es un problema mucho más difícil de resolver. Supongamos que decide que todos deben ingresar y ver el formato de EE. UU., por ejemplo1,234,567.89
El problema entonces es que Word no reconoce "1234.56" correctamente en un sistema configurado con la configuración típica de NL. Las únicas cosas que podrías hacer (en mi opinión) para lidiar con eso serían...
a. Evite cualquier dato ingresado por el usuario o restrinja a los usuarios a ingresar solo datos de números enteros.
b. modificar temporalmente la configuración relevante de Windows en el sistema del usuario, tal vez usando VBA, si eso no está descartado por restricciones de seguridad.
No estoy seguro de que valga la pena intentar ofrecer una solución a cualquiera de esas opciones.
Sin embargo, tal vez valga la pena enumerar algunas de las cosas que una solución de propósito general a este problema podría tener en cuenta, como sigue:
El problema básico es que el formato numérico de Word depende principalmente de la configuración en Configuración/Panel de control de Windows. De hecho, la implementación de Word es tan antigua que sólo respeta algunas de esas configuraciones. Por ejemplo, agrupará dígitos en grupos de tres independientemente de lo que haya configurado en el panel de control. Como ya descubrió, no puede influir en la visualización numérica mediante un cambio de configuración regional, como por ejemplo,
\l 2057
o aplicando un idioma de revisión (que en realidad funciona hasta cierto punto con las fechas. Incluso si pudiera aplicar un idioma de revisión, aún tendría que resolverlo). cómo cambiarlo.Las versiones de escritorio y en línea de Word se comportan de manera diferente. AFAICS por el momento la versión web de Word deja los resultados de campo como están, independientemente de la configuración regional. Por supuesto, eso podría cambiar con el tiempo y las versiones de Word para "dispositivos" pueden comportarse de manera diferente. La versión de escritorio de Mac se comporta de manera muy similar a la versión de Windows, pero para modificar la configuración de Mac se necesitaría un código diferente al de la versión de Windows.
No es sólo un problema de "formato". También hay un problema de "cómo se escriben los números" y un problema de "reconocimiento".
No existe ninguna convención en la cadena de formato numérico que le permitaanularlos valores en el panel de control de Windows, o incluso especificar que desea utilizar el valor especificado en el panel de control de Windows.
Lo que quiero decir conanulares que no puedes hacer algo como
{ DECIMAL "." }{ =10000/3 \# "###0<decimal>00" }
entonces Word lo haríasiempreusar "." como punto decimal, independientemente de la configuración de Windows.
Lo que quiero decir con "usar el valor especificado en el panel de control de Windows" es esto: cuando escribes un formato como
#,##0.00
entonces, si "," es en realidad el carácter de punto decimal en la configuración de Windows, toda la cadena de formato no puede comportarse como se esperaría.
posiblemente realmente quieras usar algo como
#<thousands>##0<decimal>00
donde Word realmente toma el valor de y desde el Panel de control de Windows.
Aparte de recurrir a VBA, no hay nada en Word que le permita descubrir de manera confiable los valores actuales del carácter separador de miles, el carácter de punto decimal (o la cadena de caracteres de moneda).
(Probablemente no sea relevante en su caso, pero vale la pena mencionarlo para que esté completo) Si usa metadatos de SharePoint para insertar valores numéricos a través de controles de contenido, terminará teniendo que trabajar con el "." convención para puntos decimales porque esa es la convención que usa XML y Word no le ayuda a superarla.
En cadenas de formato numérico, el "carácter separador de miles" no es posicional. por ejemplo, en la convención de EE. UU. y el Reino Unido, formatear
1000000
con\#",0"
le proporciona1,000,000
, no100000,0
Si también necesita ingresar/formatear datos de moneda, se aplican configuraciones adicionales. Si tienes un documento con datos en dos o más monedas diferentes, tienes que aceptar que Word solo reconocerá una de ellas como moneda.
Word obtiene el valor de otro carácter especial del panel de control de Windows: el carácter separador de lista. Suele ser "," o ";". Si tiene fórmulas que usan funciones con parámetros, debe usar el separador correcto. (Es posible que también necesite utilizar el separador correcto en otros tipos de campos como TOC y EQ).
Sospecho que intentar detectar o evaluar los valores de los tres caracteres variables (punto decimal, separador de agrupación de dígitos, separador de lista) utilizando codificación de campo es prácticamente imposible en el caso general. Incluso el enfoque que sugerí anteriormente puede resultar en un error de sintaxis, particularmente si está haciendo una combinación de correspondencia donde Word puede marcar un error de sintaxis que no causa un problema en un documento normal.