42

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

[$-409]m/d/yy h:mm AM/PM;@

我试图破译这真正意味着什么。我从谷歌搜索中收集到,方括号中的值是“条件”,如果条件:

$-409

满足,那么它将使用NumberFormat

m/d/yy h:mm AM/PM

如果没有,它使用NumberFormat

@

我发现的参考资料说数字格式“@”是文本占位符

所以我的问题是:

  1. 什么是有条件的$-409测试?它是否将某物与-409(即409 )进行比较,如果是,它所比较的​​美元符号是什么?

  2. 如果条件失败,并且它使用文本占位符“at-sign”,它会显示什么?

4

5 回答 5

48

为了澄清其他人所说的话:

[$-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                           上午

因此,最终具有两个不同区域设置标识符的相同格式代码会给出不同的结果:

[$-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 上午

由于查找语言环境代码列表就像拔牙一样,这里有一些参考:

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

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

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

于 2009-05-22T18:27:07.133 回答
12

Naaf and Grant Wagner have neatly answered the question about your $-409, so I'll just fill in the missing part:

The '@' after the semicolon tells Excel how to treat the data if you enter a string instead of a valid date. The @ simply means "place any text here, verbatim".

Some quick examples to illustrate the point:

=TEXT("abc","hh:mm;@")
abc


=TEXT("abc","hh:mm;@@")
abcabc

See this article for a detailed description of the text formatting options.

于 2009-05-21T22:53:27.030 回答
8

这篇文章解释了它。基本上 409 是“英语 - 美国”的语言环境 ID 。例如,如果您使用[$-414],则日期将被格式化为“挪威语(博克马尔)”。

我对问题 (2) 的猜测是原始数据将显示为字符串而不是格式化。快速测试将验证这一点。

于 2009-05-21T20:27:28.790 回答
4

Excel 2007 中有一个错误,它将所有常规格式更改为 [$-409] 类型的日期格式。
通常,使用 [$-409] 是可以的格式。
微软尚未提供该错误的修复程序。此错误通常发生在大型和共享 Excel 工作簿中。

如果您曾经有过将所有常规格式更改为日期的经验,请尝试转到单元格样式,右键单击正常并将正常修改回常规。它会在框中告诉您 Normal 的格式类型。这是错误,因为它通常应该是“一般”而不是 [$-409] 的某些版本。

我最终不得不从工作簿中完全删除格式。必须取消共享工作簿才能执行此操作。要从工作簿的“普通”单元格类型下删除上面标识的格式 [$-409],右键单击一个单元格,选择自定义,滚动直到找到上面标识的 [$-409] 格式类型,然后删除所有格式将回到所谓的一般。

于 2010-07-13T20:09:20.330 回答
3

[$-409]似乎不是一个条件。它似乎是一个区域设置代码。

如果我使用自定义格式格式化单元格[$-409]m/d/yy h:mm AM/PM;@,输入日期:1/1/9,然后查看单元格的格式,我会看到日期格式为m/d/yy h:mm AM/PM区域设置(位置)English (United States)

如果您将格式更改为类似的格式,[$-439]m/d/yy h:mm AM/PM;@您将看到另一种语言的单元格内容。

我不确定@。如果正确的字体或语言环境不可用,它可能会指示如何显示日期。

这是Microsoft 分配的区域设置 ID列表。

于 2009-05-21T20:29:20.423 回答