Excel数字格式:什么是"[$ -409]"?

Ian*_*oyd 35 excel number-formatting

我正在自动化excel,使用宏系统作为我应该通过自动化做什么的指南.当我将列格式化为日期时,宏NumberFormat为列生成a :

[$-409]m/d/yy h:mm AM/PM;@
Run Code Online (Sandbox Code Playgroud)

我试图破译这意味着什么.我从谷歌搜索,方括号中的值是一个"条件",如果条件:

$-409
Run Code Online (Sandbox Code Playgroud)

满足,然后它将使用 NumberFormat

m/d/yy h:mm AM/PM
Run Code Online (Sandbox Code Playgroud)

如果没有,它使用 NumberFormat

@
Run Code Online (Sandbox Code Playgroud)

我发现的参考文献说数字格式"@"是文本占位符

所以我的问题是:

  1. 什么是有条件的$ -409测试?是比较-409(即负四百九十)的东西,如果是这样,那么它与之比较的美元符号是什么?

  2. 如果条件失败,并且它转向文本占位符 "at-sign",它显示为什么?

Ian*_*oyd 40

澄清别人说的话:

[$ -409]是一个区域代码,以十六进制给出.使用特定区域设置代码添加日期前缀可确定使用各种日期时间格式代码时显示的内容.例如使用日期

1973年11月28日上午11:28:13

作为下表的示例:

Format Code  409 (English United States)  804 (Chinese PRC)
===========  ===========================  =================
m            11                           11
mm           11                           11
mmm          Nov                          ???
mmmm         November                     ???
d            27                           27
dd           27                           27
ddd          Mon                          ?
dddd         Monday                       ???
y            73                           73
yy           73                           73
yyy          1973                         1973
yyyy         1973                         1973
AM/PM        AM                           ??
Run Code Online (Sandbox Code Playgroud)

因此,最终使用两个不同的区域设置标识符的相同格式代码会产生不同的结果:

[$-409]mmmm dd yyyy  h:mm AM/PM
November 27 1973  11:28 AM


[$-804]mmmm dd yyyy  h:mm AM/PM
??? 27 1973  11:28 ??
Run Code Online (Sandbox Code Playgroud)

由于找到一个区域代码列表就像拔牙一样,这里有一些参考:

语言标识符常量和字符串(主要来源,archive.is)

按区域设置排序的Windows区域设置代码 (archive.is)

Windows区域设置代码按区域设置排序 (archive.org,archive.is)

  • [specs](http://www.ecma-international.org/publications/standards/Ecma-376.htm)规定,如果"m"或"mm"紧跟在"h"或"hh"之后,或立即在"s"或"ss"之前,它被解释为分钟; 否则,这是月份. (4认同)
  • 有关区域设置代码和日历代码的更完整列表...请查看我在此答案中的来源(略有不同)... /sf/ask/3789431061/ -in-excel-locale-code-130000-mean/54540455#54540455 (2认同)

e.J*_*mes 12

Naaf和Grant Wagner已经巧妙地回答了关于你的问题$-409,所以我将填写缺失的部分:

分号后面的'@'告诉Excel如果输入字符串而不是有效日期,如何处理数据.在@仅仅意味着"放置任何文本在这里,逐字".

一些简单的例子说明了这一点:

=TEXT("abc","hh:mm;@")
abc
Run Code Online (Sandbox Code Playgroud)


=TEXT("abc","hh:mm;@@")
abcabc
Run Code Online (Sandbox Code Playgroud)

有关文本格式选项的详细说明,请参阅此文章.


Naa*_*aff 7

这篇文章解释了它.基本上409是"英语 - 美国" 的语言环境ID.[$-414]例如,如果您使用了日期,则将格式化为"Norwegian(Bokmål)".

我对问题(2)的猜测是原始数据将以字符串形式呈现,而不是格式化.快速测试将验证这一点.