AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / computer / 问题 / 1599936
Accepted
Abel
Abel
Asked: 2020-11-06 08:34:02 +0800 CST2020-11-06 08:34:02 +0800 CST 2020-11-06 08:34:02 +0800 CST

强制为 Word 中具有数字数据或公式的字段选择区域设置

  • 772

我有一个简单的功能:{=B2*C2 \# "-#.##0,00"}在 Word 中的表格中。但是,这给出了结果2.345,67,因为我住在荷兰。现在我需要与英语同事分享这份文档,并希望这些公式的格式(我有很多)显示为2,345.67,即英国或美国语言环境。我可以通过使用来做到这一点{=B2*C2 \# "-#.##0,00"},但是我需要维护文档的两个版本并更新每个字段。

我更喜欢能够以某种中心方式设置语言环境,但是为文档设置语言环境或通过校对工具没有帮助,而且这个建议,即使用类似\l 2057英语的语言环境会产生语法错误。

尽管我更喜欢使用语言设置,但我可以清楚地手动更改格式字符串。同样不适用于正在读取的字段:如果我将字段更改B2为使用小数点而不是逗号,则无法正确计算。

更改整个计算机的区域设置会有所帮助,但这不是一个长期的解决方案。

microsoft-word locale
  • 1 1 个回答
  • 123 Views

1 个回答

  • Voted
  1. Best Answer
    user1079414
    2020-11-07T06:22:53+08:002020-11-07T06:22:53+08:00

    这个领域有很多问题,没有一个是特别容易解决的。

    在某些方面,主要问题不是您实际描述的问题,即格式不起作用,而是当用户在表格中输入数字时,它是“固定的”问题,即在您输入之后

    1234,56
    

    Word 中没有完全可靠的机制可以将其更改为

    1234.56
    

    Word 将根据 Windows 控制面板是否将小数点字符设置为“。”而以不同方式识别数字。或者 ”,”。

    如果您正在创建一个没有此类值的文档(只是空单元格),并且您要将“表单”发送给将输入值的美国/英国用户,然后英国/美国才会使用它用户,您可以做几件事。

    否则,AFAIK,您要么必须强迫人们以非常不自然的方式输入数据,要么一旦用户输入 1234.56,您就必须轻松地将所有数字转换为其他文化的格式。在最简单的情况下,您可以使用通配符查找/替换来替换类似

    ([0-9]),([0-9])
    

    至

    \1.\2
    

    (或相反),假设这不会修改任何其他看起来像数字的东西。您可能需要将其包装在 VBA 宏中。

    至于格式化开关,唯一真正可靠的处理方法是不使用它们并完全依赖 Word 默认情况下如何格式化数字。(FWIW,当人们在 Word 数字格式中放置“#”占位符时,有时是因为他们来自 Excel 背景,而他们没有意识到他们只是不需要它们)。

    但是,如果您必须使用数字格式,那么您必须将正确的“小数点”和“千位分隔符”字符放入格式中。我的意思是与正在编辑文档的机器上的 Windows 控制面板中使用的字符相同。

    使用字段并没有一种完全可靠的内置方法。您可以使用 VBA 从 Windows 获取相关字符。或者,您可以尝试使用以下几行中的一些嵌套字段“伪造它”:

    { IF 1/2 = 0,5 "{ SET POINT "," }{ SET GROUP "." }" "{ SET POINT "." }{ SET GROUP "," }" }
    

    (请记住,所有的 { } 必须是特殊的字段代码大括号对,您可以在 Windows 桌面 Word 上使用 ctrl-F9 插入)

    然后,而不是

    {=B2*C2 \# "-#.##0,00"}
    

    你用

    {=B2*C2 \# "-#{ GROUP }##0{ POINT }00"}
    

    或者,您可以在文档开头定义格式,例如

    { SET FORMAT1 "-#{ GROUP }##0{ POINT }00" }
    

    然后使用

    {=B2*C2 \# "{ FORMAT1 }"}
    

    显然,上述方法不会处理任意语言环境(例如,某些语言环境使用不间断空格字符作为千位分隔符)或控制面板中的异常设置,但它们对于 NL/US/UK 来说可能就足够了。

    不幸的是,这是一个“容易”解决的问题。如果您真正想要的是修复所有内容,以便您的所有用户(荷兰/英国/美国)输入并看到相同的格式,而不管他们的 Windows 设置如何,这实际上是一个更难解决的问题。假设您决定每个人都应该输入并查看美国格式,例如1,234,567.89

    那么问题是 Word 无法在使用典型 NL 设置的系统上正确识别“1234.56”。你唯一可以做的事情(IMO)来处理这将是......

    一个。避免任何用户输入的数据,或限制用户只输入整数数据

    湾。临时修改用户系统上的相关 Windows 设置,如果不排除安全限制,可能使用 VBA。

    我不确定是否值得尝试为这些选项中的任何一个提供解决方案。

    但是,也许值得列出一些针对该问题的通用解决方案可能必须考虑的事项,如下所示:

    1. 基本问题是Word的数字格式主要依赖于Windows设置/控制面板中的设置。事实上,Word 的实现太老了,它只支持其中的一些设置。例如,无论您在控制面板中设置什么,它都会以三个为一组进行数字分组。正如您已经发现的那样,您无法使用区域设置开关来影响数字显示,例如\l 2057或通过应用校对语言(这在一定程度上确实适用于日期。即使您可以应用校对语言,您仍然需要解决如何改变它。

    2. 桌面版和在线版 Word 的行为方式不同。目前,AFAICS 的 Word 的 Web 版本将字段结果保持原样,无论任何区域设置如何。当然,这可能会随着时间的推移而改变,并且 Word 的“设备”版本的行为可能会有所不同。Mac Desktop 版本的行为方式与 Windows 版本大致相同,但修改 Mac 设置需要与 Windows 版本不同的代码。

    3. 不仅仅是“格式”问题。还有一个“你如何输入你的数字”的问题和一个“识别”的问题。

    4. 数字格式字符串中没有约定可以让您覆盖Windows 控制面板中的值,甚至指定您要使用 Windows 控制面板中指定的值。

    我所说的覆盖的意思是你不能做类似的事情

    { DECIMAL "." }{ =10000/3 \# "###0<decimal>00" }
    

    所以 Word总是使用“。” 作为小数点,无论 Windows 设置如何。

    我所说的“使用 Windows 控制面板中指定的值”的意思是:当您键入格式时,例如

    #,##0.00 
    

    那么如果“,”实际上是 Windows 设置中的小数点字符,则整个格式字符串的行为可能不会像您希望的那样。

    你可以说真的想使用类似的东西

    #<thousands>##0<decimal>00
    

    Word 实际从 Windows 控制面板获取值的位置。

    1. 除了求助于 VBA,Word 中没有任何东西可以让您可靠地发现千位分隔符、小数点字符(或货币字符串)的当前值

    2. (可能与您的情况无关,但为了完整性值得一提)如果您使用 SharePoint 元数据通过内容控件插入数值,您最终不得不使用“。” 小数点的约定,因为这是 XML 使用的约定,而 Word 无法帮助您克服它。

    3. 在数字格式字符串中,“千位分隔符”不是位置的。例如,在美国/英国惯例中,格式化1000000为\#",0"您1,000,000,而不是100000,0

    4. 如果您还需要输入/格式化货币数据,则应用附加设置。如果您的文档包含两种或多种不同货币的数据,您必须接受 Word 只会将其中一种识别为货币。

    5. Word 从 Windows 控制面板获取另一个特殊字符的值 - 列表分隔符。它通常是“,”或“;”。如果您的公式使用带参数的函数,则需要使用正确的分隔符。(您可能还需要在其他字段类型中使用正确的分隔符,例如 TOC 和 EQ)。

    6. 我怀疑,在一般情况下,尝试使用字段编码检测或评估三个可变字符(小数点、数字分组分隔符、列表分隔符)的值实际上是不可能的。即使我上面建议的方法也可能导致语法错误,特别是如果您正在执行邮件合并,其中 Word 可能会标记不会导致普通文档出现问题的语法错误。

    • 2

相关问题

  • MS Word – 如何在每页的右边缘插入一列

  • 使用 Microsoft Word 保存不带 BOM 的 UTF-8 文件

  • 如何去除Word中奇怪的空格符号

  • 在word中编辑模板以删除难看的空格

  • Microsoft Word - 如何减小所有样式的文本大小

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何减少“vmmem”进程的消耗?

    • 11 个回答
  • Marko Smith

    从 Microsoft Stream 下载视频

    • 4 个回答
  • Marko Smith

    Google Chrome DevTools 无法解析 SourceMap:chrome-extension

    • 6 个回答
  • Marko Smith

    Windows 照片查看器因为内存不足而无法运行?

    • 5 个回答
  • Marko Smith

    支持结束后如何激活 WindowsXP?

    • 6 个回答
  • Marko Smith

    远程桌面间歇性冻结

    • 7 个回答
  • Marko Smith

    子网掩码 /32 是什么意思?

    • 6 个回答
  • Marko Smith

    鼠标指针在 Windows 中按下的箭头键上移动?

    • 1 个回答
  • Marko Smith

    VirtualBox 无法以 VERR_NEM_VM_CREATE_FAILED 启动

    • 8 个回答
  • Marko Smith

    应用程序不会出现在 MacBook 的摄像头和麦克风隐私设置中

    • 5 个回答
  • Martin Hope
    CiaranWelsh 如何减少“vmmem”进程的消耗? 2020-06-10 02:06:58 +0800 CST
  • Martin Hope
    Jim Windows 10 搜索未加载,显示空白窗口 2020-02-06 03:28:26 +0800 CST
  • Martin Hope
    v15 为什么通过电缆(同轴电缆)的千兆位/秒 Internet 连接不能像光纤一样提供对称速度? 2020-01-25 08:53:31 +0800 CST
  • Martin Hope
    fixer1234 “HTTPS Everywhere”仍然相关吗? 2019-10-27 18:06:25 +0800 CST
  • Martin Hope
    andre_ss6 远程桌面间歇性冻结 2019-09-11 12:56:40 +0800 CST
  • Martin Hope
    Riley Carney 为什么在 URL 后面加一个点会删除登录信息? 2019-08-06 10:59:24 +0800 CST
  • Martin Hope
    zdimension 鼠标指针在 Windows 中按下的箭头键上移动? 2019-08-04 06:39:57 +0800 CST
  • Martin Hope
    jonsca 我所有的 Firefox 附加组件突然被禁用了,我该如何重新启用它们? 2019-05-04 17:58:52 +0800 CST
  • Martin Hope
    MCK 是否可以使用文本创建二维码? 2019-04-02 06:32:14 +0800 CST
  • Martin Hope
    SoniEx2 更改 git init 默认分支名称 2019-04-01 06:16:56 +0800 CST

热门标签

windows-10 linux windows microsoft-excel networking ubuntu worksheet-function bash command-line hard-drive

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve