pla*_*er0 0 syntax formatting datetime date google-sheets
官方文档中未提及的 Google 表格区域设置之间有哪些差异?
这是一个相当简单的问题,源于 Google Sheets 项目经理的文档失败!
进一步澄清这些要点的奖励积分,这些要点是我的研究/观察的一部分(因为这些要点与上述问题直接相关,因此我将它们作为我有兴趣了解的细节包括在内):
该文档未能充分传达可用功能。
pla*_*er0 10
截至今天(2022 年 9 月 19 日),Google 表格中有 72 个区域设置可以通过
“文件”>“电子表格设置”进行访问
| 阿根廷 | 芬兰 | 以色列 | 塞尔维亚 |
| 亚美尼亚 | 法国 | 意大利 | 斯洛伐克 |
| 澳大利亚 | 乔治亚州 | 日本 | 斯洛文尼亚 |
| 阿塞拜疆 | 德国 | 哈萨克斯坦 | 韩国 |
| 白俄罗斯 | 希腊 | 拉脱维亚 | 西班牙 |
| 玻利维亚 | 香港 | 立陶宛 | 西班牙(加泰罗尼亚语) |
| 巴西 | 匈牙利 | 墨西哥 | 瑞典 |
| 保加利亚 | 印度 | 蒙古 | 瑞士 |
| 加拿大(英语) | 印度(孟加拉) | 缅甸(缅甸) | 台湾 |
| 加拿大(法语) | 印度(古吉拉特语) | 荷兰 | 泰国 |
| 智利 | 印度(卡纳达语) | 挪威(博克马尔) | 火鸡 |
| 中国 | 印度(马拉雅拉姆语) | 挪威(尼诺斯克) | 乌克兰 |
| 哥伦比亚 | 印度(马拉地语) | 巴拉圭 | 英国 |
| 克罗地亚 | 印度(旁遮普语) | 菲律宾 | 联合王国(威尔士) |
| 捷克 | 印度(泰米尔语) | 波兰 | 美国 |
| 丹麦 | 印度(泰卢固语) | 葡萄牙 | 乌拉圭 |
| 厄瓜多尔 | 印度尼西亚 | 罗马尼亚 | 委内瑞拉 |
| 埃及 | 爱尔兰 | 俄罗斯 | 越南 |
每个语言环境都有自己的一套独特的格式规则和基于其镜像国家/地区的怪癖。电子表格世界分为 2 个主要语法组:
\n,;这些是公式参数分隔符,每个区域设置都倾向于其中之一。逗号,用于 28 个语言环境:
| 澳大利亚 | 印度(古吉拉特语) | 爱尔兰 | 韩国 |
| 加拿大(英语) | 印度(卡纳达语) | 以色列 | 瑞士 |
| 中国 | 印度(马拉雅拉姆语) | 日本 | 台湾 |
| 埃及 | 印度(马拉地语) | 墨西哥 | 泰国 |
| 香港 | 印度(旁遮普语) | 蒙古 | 英国 |
| 印度 | 印度(泰米尔语) | 缅甸(缅甸) | 联合王国(威尔士) |
| 印度(孟加拉) | 印度(泰卢固语) | 菲律宾 | 美国 |
其余的都使用分号;
如果您不确定您的电子表格,您可以在电子表格的任何单元格中运行这个独特的通用公式来检查:
\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)))\nRun Code Online (Sandbox Code Playgroud)\n\n\n\n有趣的事实:该公式在不违反循环引用的情况下自行报告,因此无需启用迭代计算!
\n
此时,50% 的人可能已经注意到,运行上述公式后,所有分号;都会自动更正为逗号,
是的,如果您的区域设置是使用逗号的 28 个区域之一(并且在最新更新后,它甚至适用于conditional formatting, data validationand named functions) ,Google 表格能够自动将分号更正为逗号
请记住,如果您在电子表格的黑暗面,逗号永远不会自动更正为分号,因此请注意您的逗号!
\n另外,值得一提的是,反斜杠\\不会自动更正为数组,构造中的逗号{}!如果你把单元格/范围堆叠成行,你会遇到 ARRAY_ROW ERROR。此错误与ARRAY_LITERAL ERROR相同- 但用于将内容彼此相邻堆叠。采用逗号语法变体并用分号替换所有逗号是一个常见的错误,如果存在{}包含逗号的数组构造,则肯定会出错。
转换公式语法的最佳实践(特别是如果它是一些高级复杂的 fx)是:
\n这样,所有分隔符都会自动转换,失败的可能性为零(通常标记为 array_literal、aray_row 或公式解析错误),因此将其总结为 99% 应用以下内容:
\n| 逗号语法 | 分号语法 | |
|---|---|---|
| fx 参数分隔符 | , | ; |
| 数组列堆叠 | ; | ; |
| 数组行堆叠 | , | \\ |
| 小数点分隔符 | 。 | , |
或者您可以从公式工具提示帮助框中获取提示:
\n\n现在噩梦开始了。切换发生后,一种语言环境不会自动识别另一种语言环境的格式!它几乎适用于数值(数字),但当涉及到日期、时间、日期时间和货币时,它完全失败。
\n目前,有 6 种公认的数字格式:
\n\n您的敏锐洞察力可能会立即发现 A3:A4 问题。作为千位分隔符,它们都使用空白,但 A4 中的空白更短!是的,那是法国语言环境。A5 仅特定于阿拉伯语言符号组,因此是埃及语言环境,A6 当然是带有“智能撇号”的西班牙。通过省略那个尴尬的短空格千位分隔符,我们可以将其划分为:
\n\n没那么糟糕吧?错误的!欢迎来到印度,在这里您可以找到十万和克罗的千位分隔符和百位分隔符(也可以看到阿拉伯、卡拉布、尼尔、帕德玛和香赫)
\n1 Lakh = 1,00,000\n1 Crore = 1,00,00,000\n10 Shankh = 10,00,00,00,00,00,00,00,000\nRun Code Online (Sandbox Code Playgroud)\n当你这样做的时候,你可能会因为简短的自定义数字格式而发疯
\n回到主题...如果您不关心数字格式并且喜欢它纯粹和原始,我们可以将区域设置分为 3 组小数分隔符,其中.使用点
| 澳大利亚 | 印度(马拉地语) | 缅甸(缅甸) |
| 加拿大(英语) | 印度(旁遮普语) | 菲律宾 |
| 中国 | 印度(泰米尔语) | 韩国 |
| 香港 | 印度(泰卢固语) | 瑞士 |
| 印度 | 爱尔兰 | 台湾 |
| 印度(孟加拉) | 以色列 | 泰国 |
| 印度(古吉拉特语) | 日本 | 英国 |
| 印度(卡纳达语) | 墨西哥 | 联合王国(威尔士) |
| 印度(马拉雅拉姆语) | 蒙古 | 美国 |
其余的使用逗号,,埃及有自己的阿拉伯分隔符\xd9\xab
可悲的是,日期是一个全新的混乱篇章。有 19 种独特的格式,这是完全可以理解的,但它们不向后兼容!最常见的格式是dd/mm/yyyy:
如果所选日期格式没有正确的区域设置,可能会导致您的日期不会被识别为公式中的有效日期,并且您需要像本示例或本示例中那样修改它们。另外,我们不要忘记纪元/unix 日期,并且SQL QUERY只能识别yyyy-mm-dd格式。
您可以使用 ISDATE 检查日期的有效性,例如:
\n=ISDATE(A1)\nRun Code Online (Sandbox Code Playgroud)\n或者作为具有秘密隐藏公式的数组公式(是的,就是这样)ISDATE_STRICT,例如:
\n=ARRAYFORMULA(ISDATE_STRICT(A1:A))\nRun Code Online (Sandbox Code Playgroud)\n没有时间像时间一样......最常见的格式hh:mm:ss也令人惊讶的是:
挪威(博克马尔)、挪威(尼诺斯克)和芬兰有自己的klo/kl.东西,而亚美尼亚、阿塞拜疆、格鲁吉亚、蒙古和缅甸(缅甸)不承认秒是重要的东西!大多数人选择全时间格式,有 16 人更喜欢 AM/PM 时间格式:
| 阿根廷 | 哥伦比亚 | 香港 | 台湾 |
| 玻利维亚 | 厄瓜多尔 | 墨西哥 | 美国 |
| 智利 | 埃及 | 巴拉圭 | 乌拉圭 |
| 中国 | 希腊 | 韩国 | 委内瑞拉 |
当使用 TEXT 等公式定位时间时,请注意在丹麦、芬兰、意大利、挪威 (博克马尔)、挪威 (nynorsk)、瑞典语言环境和上述/时间前缀上使用点分隔符.而不是冒号。:klokl.
虽然所有 72 个区域设置都支持 AM/PM 格式,但以下各项不支持短 AM/PM (A/P) 格式:
\n| 匈牙利 | 立陶宛 | 韩国 |
| 日本 | 蒙古 | 火鸡 |
| 拉脱维亚 | 葡萄牙 | 联合王国(威尔士) |
转到日期时间,看起来有 28 种独特的组合:
\n\n最常见的是 20 个区域内的格式dd/mm/yyyy hh:mm:ss:
| 澳大利亚 | 印度(古吉拉特语) | 印度(泰米尔语) | 西班牙 |
| 巴西 | 印度(卡纳达语) | 印度(泰卢固语) | 西班牙(加泰罗尼亚语) |
| 法国 | 印度(马拉雅拉姆语) | 印度尼西亚 | 英国 |
| 印度 | 印度(马拉地语) | 爱尔兰 | 联合王国(威尔士) |
| 印度(孟加拉) | 印度(旁遮普语) | 以色列 | 越南 |
其余的各不相同。其中一些使用 AM/PM,一些不使用秒,其他使用时间前缀klo/ kl.,香港甚至使用年\xe5\xb9\xb4、月\xe6\x9c\x88和日的后缀\xe6\x97\xa5。再说一遍,变化完全没问题,但问题是用 TEXT 公式来定位它们。这表明,不是 28 个,而是 34 个!独特的组合:
值得一提的是,有 4 个区域设置无法定位!可以通过妥协来模仿两个语言环境,其中需要交换顺序:
\n| 约会时间 | 有针对性的 | 妥协 | |
|---|---|---|---|
| 亚美尼亚 | 2009年1月24日 16:00 | 日.月.年 时:分 | 不带逗号 |
| 乔治亚州 | 2009年1月24日 16:00 | 日.月.年 时:分 | 不带逗号 |
| 蒙古 | 2009-01-24, 16:00 | e-月-日 时:分 | 不带逗号 |
| 泰国 | 2009年1月24日 16:00:00 | 日/月/日:分:秒 | 不带逗号 |
| 埃及 | 4:00:00 \xd9\x85 2009/01/24 | e/mm/dd 时:分:秒 上午/下午 | 时间日期交换 |
| 缅甸(缅甸) | 16:00 24-01-09 | 日-月-年 时:分 | 时间日期交换 |
西班牙一个月内d只有一两个人,这很奇怪- 。斯洛文尼亚 ( ) 和韩国 ( ) 点后有空格...只是为了澄清,“目标日期时间”意味着重新创建确切的格式,并将 TEXT fx 与 1 相乘,不会出现任何错误,因此游戏可以保持有效需要时的日期时间值。mmd/mm/e h:mm:ssd. m. e h:mm:sse. m. d am/pm h:mm:ss.
世界其他国家应该花点时间理解美国没有时间接受帝国体系——无论它是什么样子
\n只要时机成熟,如何总结时间总是很好的技巧
\n接下来是TEXT字符串的区别:
\nddd - 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\nRun Code Online (Sandbox Code Playgroud)\n每个地区都遵循当地习俗,所以我们称其为每个人都是独一无二的*cought*
\n\n这里的问题是缅甸(缅甸)默认情况下不支持字符,也不支持大多数字体,结果是豆腐符号:
\n\n因此有必要找到并添加一种字体来修复此问题。例如,紫檀木就是这样的:
\n\n然后是谷歌翻译。72 个语言环境中有 71 个支持 googletranslate。害群之马是挪威(nynorsk)地区。另一方面,自动翻译为:
\n=GOOGLETRANSLATE("hello")\nRun Code Online (Sandbox Code Playgroud)\n或作为:
\n=GOOGLETRANSLATE("hello"; "auto"; "auto")\nRun Code Online (Sandbox Code Playgroud)\n仅受 16 个区域设置支持:
\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))))))}\nRun Code Online (Sandbox Code Playgroud)\n\n是的,顺便说一句,英国的正确语言代码也en-GB不起作用en-UK。所有语言环境都有自己独特的 IMPORTXML、IMPORTDATA 和 IMPORTHTML 公式共同的语言代码,因为它们应该如此。
最后,让我们谈谈货币。通过探索工具栏上的货币按钮,我们可以了解到有多少开发人员不关心修复错误和官方文档!
\n人们会错误地认为欧元作为欧盟的货币在所有国家都是相同的。有 3 种变体:
\n\n意大利、荷兰和斯洛文尼亚没有获得全球统一货币体系的备忘录,爱尔兰也决定不再考虑太空问题。
\n白俄罗斯和乌克兰在货币值后添加尾随空格!
\n\n保加利亚、俄罗斯、塞尔维亚和乌克兰货币是用西里尔字母书写的,而白俄罗斯货币不是用西里尔字母书写的,所以我们看到俄罗斯 - 白俄罗斯的视觉混乱:
\nbelarus - 1,00 p. \nrussia - \xd1\x80.1,00\nRun Code Online (Sandbox Code Playgroud)\n(顺序值>符号与符号>值无关)
\n然后我们有一个视觉错误:
\n| 保加利亚 | 印度(马拉雅拉姆语) |
| 印度 | 印度(马拉地语) |
| 印度(孟加拉) | 印度(旁遮普语) |
| 印度(古吉拉特语) | 印度(泰米尔语) |
| 印度(卡纳达语) | 印度(泰卢固语) |
工具栏按钮上的货币后面有一个点.,但按下该按钮不会产生任何点!
如果工具栏按钮上有一个货币符号,按下它后会产生完全不同的货币符号怎么办?致越南的问候:
\n\n距离越南不到 1465 公里就有菲律宾:
\n\n还不够吗?在不同条件下检测不同货币的区域设置如何,例如。按货币按钮将产生其他结果,而不是采用
“格式” > “数字” > “自定义货币” > “默认检测到的建议”路径
默认情况下生成双货币系统的所有 27 个语言环境的列表:
\n| 亚美尼亚 | 印度(孟加拉) | 菲律宾 |
| 阿塞拜疆 | 印度(古吉拉特语) | 罗马尼亚 |
| 玻利维亚 | 印度(卡纳达语) | 俄罗斯 |
| 保加利亚 | 印度(马拉雅拉姆语) | 塞尔维亚 |
| 加拿大(英语) | 印度(马拉地语) | 瑞士 |
| 丹麦 | 印度(旁遮普语) | 台湾 |
| 埃及 | 印度(泰米尔语) | 火鸡 |
| 香港 | 印度(泰卢固语) | 委内瑞拉 |
| 印度 | 巴拉圭 | 越南 |
丹麦甚至出于某种未知的原因只吐出一个点:
\n\n13 个具有辅助货币的语言环境甚至不支持默认字体下的符号
\n\n即使在 TEXT 公式中针对语言环境的货币也不像人们想象的那么简单。无论您使用哪种语言环境,货币都使用点.作为小数点分隔符,因此该值的语法始终为0.00。
那么每种货币都需要以不同的方式定位,因为缺乏可以自动获取所选区域设置的货币的通用符号/字符。“但是,但是我们有美元” - 是的,这是许多冗余功能中的另一个,它只是镜像工具栏按钮(并潜入白俄罗斯和乌克兰语言环境的尾随空间)。在 QUERY 的 SQL 参数中,我们没有使用 DOLLAR。
\nTEXT 公式的一些示例,其中.值之前的某些内容和点需要使用反斜杠转义,\\例如:
| 塞尔维亚 | \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。 |
72 个受支持区域的世界地图:
\n\n| 归档时间: |
|
| 查看次数: |
907 次 |
| 最近记录: |