Google 表格中的区域设置差异(文档缺失页面)

pla*_*er0 0 syntax formatting datetime date google-sheets

问题

官方文档中未提及的 Google 表格区域设置之间有哪些差异?

细节

这是一个相当简单的问题,源于 Google Sheets 项目经理的文档失败!

进一步澄清这些要点的奖励积分,这些要点是我的研究/观察的一部分(因为这些要点与上述问题直接相关,因此我将它们作为我有兴趣了解的细节包括在内):

  • 为什么有逗号和分号的语法
  • 为什么以及何时它们兼容(不兼容)
  • 什么是数组文字和数组行错误
  • 为什么数字、日期、时间和日期时间无法识别
  • 所有区域设置均支持 AM/PM 格式
  • 转换公式语法的最佳方法是什么
  • GOOGLETRANSLATE 公式不支持哪个区域设置
  • 为什么有多种货币格式
  • 什么时候不支持自动翻译
  • 导入函数的语言代码是什么
  • 在语言环境之间切换时如何避免豆腐符号
  • 有没有值得失望的货币错误
  • 还有什么受语言环境影响
  • 我们可以在 TEXT 函数中重现日期时间和货币吗
  • 如何修复和避免公式解析错误

该文档未能充分传达可用功能。

pla*_*er0 10

截至今天(2022 年 9 月 19 日),Google 表格中有 72 个区域设置可以通过
“文件”>“电子表格设置”进行访问

\n

0

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
阿根廷芬兰以色列塞尔维亚
亚美尼亚法国意大利斯洛伐克
澳大利亚乔治亚州日本斯洛文尼亚
阿塞拜疆德国哈萨克斯坦韩国
白俄罗斯希腊拉脱维亚西班牙
玻利维亚香港立陶宛西班牙(加泰罗尼亚语)
巴西匈牙利墨西哥瑞典
保加利亚印度蒙古瑞士
加拿大(英语)印度(孟加拉)缅甸(缅甸)台湾
加拿大(法语)印度(古吉拉特语)荷兰泰国
智利印度(卡纳达语)挪威(博克马尔)火鸡
中国印度(马拉雅拉姆语)挪威(尼诺斯克)乌克兰
哥伦比亚印度(马拉地语)巴拉圭英国
克罗地亚印度(旁遮普语)菲律宾联合王国(威尔士)
捷克印度(泰米尔语)波兰美国
丹麦印度(泰卢固语)葡萄牙乌拉圭
厄瓜多尔印度尼西亚罗马尼亚委内瑞拉
埃及爱尔兰俄罗斯越南
\n
\n

每个语言环境都有自己的一套独特的格式规则和基于其镜像国家/地区的怪癖。电子表格世界分为 2 个主要语法组:

\n
    \n
  • 逗号,
  • \n
  • 分号;
  • \n
\n

这些是公式参数分隔符,每个区域设置都倾向于其中之一。逗号,用于 28 个语言环境:

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n
澳大利亚印度(古吉拉特语)爱尔兰韩国
加拿大(英语)印度(卡纳达语)以色列瑞士
中国印度(马拉雅拉姆语)日本台湾
埃及印度(马拉地语)墨西哥泰国
香港印度(旁遮普语)蒙古英国
印度印度(泰米尔语)缅甸(缅甸)联合王国(威尔士)
印度(孟加拉)印度(泰卢固语)菲律宾美国
\n
\n

其余的都使用分号;

\n

0

\n

如果您不确定您的电子表格,您可以在电子表格的任何单元格中运行这个独特的通用公式来检查:

\n
=INDEX(VLOOKUP(MID(FORMULATEXT(INDIRECT(ADDRESS(ROW(); COLUMN()))); 54; 1); \n SUBSTITUTE(SUBSTITUTE(SPLIT({\n ",\xe2\x99\xa3,\xe2\x99\xa6fx argument separator\xe2\x99\xa0;\xe2\x99\xa6array column stacking\xe2\x99\xa0,\xe2\x99\xa6array row stacking\xe2\x99\xa0.\xe2\x99\xa6decimal separator";\n ";\xe2\x99\xa3;\xe2\x99\xa6fx argument separator\xe2\x99\xa0;\xe2\x99\xa6array column stacking\xe2\x99\xa0\\\xe2\x99\xa6array row stacking\xe2\x99\xa0,\xe2\x99\xa6decimal separator"}; \n "\xe2\x99\xa3"); "\xe2\x99\xa0"; CHAR(10)); "\xe2\x99\xa6"; "     "); 2; IFERROR(NOW()/0)))\n
Run Code Online (Sandbox Code Playgroud)\n

0

\n
\n

有趣的事实:该公式在不违反循环引用的情况下自行报告,因此无需启用迭代计算!

\n
\n

此时,50% 的人可能已经注意到,运行上述公式后,所有分号;都会自动更正为逗号,

\n

是的,如果您的区域设置是使用逗号的 28 个区域之一(并且在最新更新后,它甚至适用于conditional formatting, data validationand named functions) ,Google 表格能够自动将分号更正为逗号

\n

请记住,如果您在电子表格的黑暗面,逗号永远不会自动更正为分号,因此请注意您的逗号!

\n

另外,值得一提的是,反斜杠\\不会自动更正为数组,构造中的逗号{}!如果你把单元格/范围堆叠成行,你会遇到 ARRAY_ROW ERROR。此错误与ARRAY_LITERAL ERROR相同- 但用于将内容彼此相邻堆叠。采用逗号语法变体并用分号替换所有逗号是一个常见的错误,如果存在{}包含逗号的数组构造,则肯定会出错。

\n

转换公式语法的最佳实践(特别是如果它是一些高级复杂的 fx)是:

\n
    \n
  • 更改区域设置以适应公式语法
  • \n
  • 在任意单元格中输入
  • \n
  • 并改回初始语言环境
  • \n
\n

这样,所有分隔符都会自动转换,失败的可能性为零(通常标记为 array_literal、aray_row 或公式解析错误),因此将其总结为 99% 应用以下内容:

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\n
逗号语法分号语法
fx 参数分隔符,;
数组列堆叠;;
数组行堆叠,\\
小数点分隔符,
\n
\n

或者您可以从公式工具提示帮助框中获取提示:

\n

在此输入图像描述

\n

现在噩梦开始了。切换发生后,一种语言环境不会自动识别另一种语言环境的格式!它几乎适用于数值(数字),但当涉及到日期、时间、日期时间和货币时,它完全失败。

\n

目前,有 6 种公认的数字格式:

\n

0

\n

您的敏锐洞察力可能会立即发现 A3:A4 问题。作为千位分隔符,它们都使用空白,但 A4 中的空白更短!是的,那是法国语言环境。A5 仅特定于阿拉伯语言符号组,因此是埃及语言环境,A6 当然是带有“智能撇号”的西班牙。通过省略那个尴尬的短空格千位分隔符,我们可以将其划分为:

\n

0

\n

没那么糟糕吧?错误的!欢迎来到印度,在这里您可以找到十万和克罗的千位分隔符和百位分隔符(也可以看到阿拉伯、卡拉布、尼尔、帕德玛和香赫)

\n
1 Lakh    = 1,00,000\n1 Crore   = 1,00,00,000\n10 Shankh = 10,00,00,00,00,00,00,00,000\n
Run Code Online (Sandbox Code Playgroud)\n

当你这样做的时候,你可能会因为简短的自定义数字格式而发疯

\n

回到主题...如果您不关心数字格式并且喜欢它纯粹和原始,我们可以将区域设置分为 3 组小数分隔符,其中.使用点

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\n
澳大利亚印度(马拉地语)缅甸(缅甸)
加拿大(英语)印度(旁遮普语)菲律宾
中国印度(泰米尔语)韩国
香港印度(泰卢固语)瑞士
印度爱尔兰台湾
印度(孟加拉)以色列泰国
印度(古吉拉特语)日本英国
印度(卡纳达语)墨西哥联合王国(威尔士)
印度(马拉雅拉姆语)蒙古美国
\n
\n

0

\n

其余的使用逗号,,埃及有自己的阿拉伯分隔符\xd9\xab

\n

可悲的是,日期是一个全新的混乱篇章。有 19 种独特的格式,这是完全可以理解的,但它们不向后兼容!最常见的格式是dd/mm/yyyy

\n

在此输入图像描述

\n

如果所选日期格式没有正确的区域设置,可能会导致您的日期不会被识别为公式中的有效日期,并且您需要像本示例本示例中那样修改它们。另外,我们不要忘记纪元/unix 日期,并且SQL QUERY只能识别yyyy-mm-dd格式。

\n

您可以使用 ISDATE 检查日期的有效性,例如:

\n
=ISDATE(A1)\n
Run Code Online (Sandbox Code Playgroud)\n

或者作为具有秘密隐藏公式的数组公式(是的,就是这样)ISDATE_STRICT,例如:

\n
=ARRAYFORMULA(ISDATE_STRICT(A1:A))\n
Run Code Online (Sandbox Code Playgroud)\n

没有时间像时间一样......最常见的格式hh:mm:ss也令人惊讶的是:

\n

0

\n

挪威(博克马尔)、挪威(尼诺斯克)和芬兰有自己的klo/kl.东西,而亚美尼亚、阿塞拜疆、格鲁吉亚、蒙古和缅甸(缅甸)不承认秒是重要的东西!大多数人选择全时间格式,有 16 人更喜欢 AM/PM 时间格式:

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n\n\n
阿根廷哥伦比亚香港台湾
玻利维亚厄瓜多尔墨西哥美国
智利埃及巴拉圭乌拉圭
中国希腊韩国委内瑞拉
\n
\n

当使用 TEXT 等公式定位时间时,请注意在丹麦、芬兰、意大利、挪威 (博克马尔)、挪威 (nynorsk)、瑞典语言环境和上述/时间前缀上使用点分隔符.而不是冒号。:klokl.

\n

虽然所有 72 个区域设置都支持 AM/PM 格式,但以下各项不支持短 AM/PM (A/P) 格式:

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n
匈牙利立陶宛韩国
日本蒙古火鸡
拉脱维亚葡萄牙联合王国(威尔士)
\n
\n

转到日期时间,看起来有 28 种独特的组合:

\n

0

\n

最常见的是 20 个区域内的格式dd/mm/yyyy hh:mm:ss

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
澳大利亚印度(古吉拉特语)印度(泰米尔语)西班牙
巴西印度(卡纳达语)印度(泰卢固语)西班牙(加泰罗尼亚语)
法国印度(马拉雅拉姆语)印度尼西亚英国
印度印度(马拉地语)爱尔兰联合王国(威尔士)
印度(孟加拉)印度(旁遮普语)以色列越南
\n
\n

其余的各不相同。其中一些使用 AM/PM,一些不使用秒,其他使用时间前缀klo/ kl.,香港甚至使用年\xe5\xb9\xb4、月\xe6\x9c\x88和日的后缀\xe6\x97\xa5。再说一遍,变化完全没问题,但问题是用 TEXT 公式来定位它们。这表明,不是 28 个,而是 34 个!独特的组合:

\n

0

\n

值得一提的是,有 4 个区域设置无法定位!可以通过妥协来模仿两个语言环境,其中需要交换顺序:

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
约会时间有针对性的妥协
亚美尼亚2009年1月24日 16:00日.月.年 时:分不带逗号
乔治亚州2009年1月24日 16:00日.月.年 时:分不带逗号
蒙古2009-01-24, 16:00e-月-日 时:分不带逗号
泰国2009年1月24日 16:00:00日/月/日:分:秒不带逗号
埃及4:00:00 \xd9\x85 2009/01/24e/mm/dd 时:分:秒 上午/下午时间日期交换
缅甸(缅甸)16:00 24-01-09日-月-年 时:分时间日期交换
\n
\n

西班牙一个月内d只有一两个人,这很奇怪- 。斯洛文尼亚 ( ) 和韩国 ( ) 点后有空格...只是为了澄清,“目标日期时间”意味着重新创建确切的格式,并将 TEXT fx 与 1 相乘,不会出现任何错误,因此游戏可以保持有效需要时的日期时间值。mmd/mm/e h:mm:ss
d. m. e h:mm:sse. m. d am/pm h:mm:ss.

\n

世界其他国家应该花点时间理解美国没有时间接受帝国体系——无论它是什么样子

\n

只要时机成熟,如何总结时间总是很好的技巧

\n

接下来是TEXT字符串的区别:

\n
ddd   - short days of week names\ndddd  - full days of week names\nmmm   - short month names\nmmmm  - full month names\nmmmmm - first character of month names\n
Run Code Online (Sandbox Code Playgroud)\n

每个地区都遵循当地习俗,所以我们称其为每个人都是独一无二的*cought*

\n

0

\n

这里的问题是缅甸(缅甸)默认情况下不支持字符,也不支持大多数字体,结果是豆腐符号:

\n

0

\n

因此有必要找到并添加一种字体来修复此问题。例如,紫檀木就是这样的:

\n

0

\n

然后是谷歌翻译。72 个语言环境中有 71 个支持 googletranslate。害群之马是挪威(nynorsk)地区。另一方面,自动翻译为:

\n
=GOOGLETRANSLATE("hello")\n
Run Code Online (Sandbox Code Playgroud)\n

或作为:

\n
=GOOGLETRANSLATE("hello"; "auto"; "auto")\n
Run Code Online (Sandbox Code Playgroud)\n

仅受 16 个区域设置支持:

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n\n\n
巴西德国墨西哥西班牙
加拿大(英语)香港菲律宾台湾
中国意大利葡萄牙英国
法国日本韩国美国
\n
\n

跳上最新的LAMBDA列车:

\n
={"google translate support";""; INDEX(IFERROR(IF(REGEXMATCH(BL3:BL; "en"); \n BYROW(BL3:BL; LAMBDA(r; GOOGLETRANSLATE("\xe8\xb0\xa2\xe8\xb0\xa2"; "zh"; r))); \n BYROW(BL3:BL; LAMBDA(r; GOOGLETRANSLATE("thanks"; "en"; r))))))}\n
Run Code Online (Sandbox Code Playgroud)\n

0

\n

是的,顺便说一句,英国的正确语言代码也en-GB不起作用en-UK。所有语言环境都有自己独特的 IMPORTXML、IMPORTDATA 和 IMPORTHTML 公式共同的语言代码,因为它们应该如此。

\n

最后,让我们谈谈货币。通过探索工具栏上的货币按钮,我们可以了解到有多少开发人员不关心修复错误和官方文档!

\n

人们会错误地认为欧元作为欧盟的货币在所有国家都是相同的。有 3 种变体:

\n

0

\n

意大利、荷兰和斯洛文尼亚没有获得全球统一货币体系的备忘录,爱尔兰也决定不再考虑太空问题。

\n

白俄罗斯和乌克兰在货币值后添加尾随空格!

\n

0

\n

保加利亚、俄罗斯、塞尔维亚和乌克兰货币是用西里尔字母书写的,而白俄罗斯货币不是用西里尔字母书写的,所以我们看到俄罗斯 - 白俄罗斯的视觉混乱:

\n
belarus - 1,00 p. \nrussia  - \xd1\x80.1,00\n
Run Code Online (Sandbox Code Playgroud)\n

(顺序值>符号与符号>值无关)

\n

然后我们有一个视觉错误:

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n
保加利亚印度(马拉雅拉姆语)
印度印度(马拉地语)
印度(孟加拉)印度(旁遮普语)
印度(古吉拉特语)印度(泰米尔语)
印度(卡纳达语)印度(泰卢固语)
\n
\n

工具栏按钮上的货币后面有一个点.,但按下该按钮不会产生任何点!

\n

0

\n

如果工具栏按钮上有一个货币符号,按下它后会产生完全不同的货币符号怎么办?致越南的问候:

\n

在此输入图像描述

\n

距离越南不到 1465 公里就有菲律宾:

\n

在此输入图像描述

\n

还不够吗?在不同条件下检测不同货币的区域设置如何,例如。按货币按钮将产生其他结果,而不是采用
“格式” > “数字” > “自定义货币” > “默认检测到的建议”路径

\n

在此输入图像描述

\n

在此输入图像描述

\n

默认情况下生成双货币系统的所有 27 个语言环境的列表:

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\n
亚美尼亚印度(孟加拉)菲律宾
阿塞拜疆印度(古吉拉特语)罗马尼亚
玻利维亚印度(卡纳达语)俄罗斯
保加利亚印度(马拉雅拉姆语)塞尔维亚
加拿大(英语)印度(马拉地语)瑞士
丹麦印度(旁遮普语)台湾
埃及印度(泰米尔语)火鸡
香港印度(泰卢固语)委内瑞拉
印度巴拉圭越南
\n
\n

丹麦甚至出于某种未知的原因只吐出一个点:

\n

在此输入图像描述

\n

13 个具有辅助货币的语言环境甚至不支持默认字体下的符号

\n

在此输入图像描述

\n

即使在 TEXT 公式中针对语言环境的货币也不像人们想象的那么简单。无论您使用哪种语言环境,货币都使用点.作为小数点分隔符,因此该值的语法始终为0.00

\n

那么每种货币都需要以不同的方式定位,因为缺乏可以自动获取所选区域设置的货币的通用符号/字符。“但是,但是我们有美元” - 是的,这是许多冗余功能中的另一个,它只是镜像工具栏按钮(并潜入白俄罗斯和乌克兰语言环境的尾随空间)。在 QUERY 的 SQL 参数中,我们没有使用 DOLLAR。

\n

TEXT 公式的一些示例,其中.值之前的某些内容和点需要使用反斜杠转义,\\例如:

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n
塞尔维亚\xd0\x94\xd0\xb8\xd0\xbd\\. 0.00
瑞士神父。0.00
俄罗斯\xd1\x80\\.0.00
白俄罗斯0.00 页
丹麦0.00 克朗
巴拉圭0.00G\\s。
乌克兰0.00 \xd0\xb3\xd1\x80\xd0\xbd。
\n
\n

72 个受支持区域的世界地图:

\n

在此输入图像描述

\n
\n
\n

在此输入图像描述

\n

pdf演示

\n

电子表格演示

\n