我正在自动化excel,使用宏系统作为我应该通过自动化做什么的指南。当我将列格式化为日期时,宏会为列生成NumberFormat
:
[$-409]m/d/yy h:mm AM/PM;@
我试图破译这意味着什么。我收集from googling,方括号中的值是“条件”,如果条件:
$-409
满足,然后它将使用NumberFormat
m/d/yy h:mm AM/PM
如果没有,则使用NumberFormat
@
我发现的参考文献说数字格式“@”是文字占位符
所以我的问题是:
什么是条件 $ - 409 测试?它是否将某些内容与 -409 (即负四百九十)进行比较,如果是,那么美元符号与它进行比较的是什么?
如果条件失败,并且它转向文字占位符“at-sign”,它显示为什么?
答案 0 :(得分:38)
澄清其他人所说的话:
[$ -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 上午
由于找到一个区域代码列表就像拔牙一样,这里有一些参考文献:
Language Identifier Constants and Strings(主要来源,archive.is)
Windows Locale Codes Sorted by Locale (archive.is)
Windows Locale Codes Sorted by Locale (archive.org,archive.is)
答案 1 :(得分:11)
Naaf和Grant Wagner已经巧妙地回答了关于你$-409
的问题,所以我只是填写缺失的部分:
分号后面的'@'告诉Excel如果输入字符串而不是有效日期,如何处理数据。 @
只是意味着“在此处放置任何文字,逐字”。
一些简单的例子来说明这一点:
=TEXT("abc","hh:mm;@")
abc
=TEXT("abc","hh:mm;@@")
abcabc
有关文本格式选项的详细说明,请参阅this article。
答案 2 :(得分:7)
This post解释了这一点。基本上409是“英语 - 美国”的locale ID。例如,如果您使用[$-414]
,那么日期将被格式化为“挪威语(Bokmål)”。
我对问题(2)的猜测是原始数据将显示为字符串而不是格式化。快速测试可以验证这一点。
答案 3 :(得分:3)
[$-409]
似乎不是一个条件。它似乎是一个Locale代码。
如果我使用自定义格式[$-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;@
,则会以其他语言显示该单元格的内容。
我不确定@
。如果没有正确的字体或区域设置,它可能表示如何显示日期。
答案 4 :(得分:3)
Excel 2007中存在一个错误,它将所有常规格式更改为[$ -409]类型的日期格式 通常情况下,使用[$ -409]是一种不错的格式 没有修复微软提供的错误。 此错误通常发生在大型和共享Excel工作簿中。
如果您有过将所有常规格式更改为日期的体验,请尝试使用“单元格样式”,右键单击“正常”并将“正常”修改为“常规”。它将在框中告诉您Normal的格式类型。这是错误,因为它通常应该是“一般”而不是[$ -409]的某些版本。
我最终不得不完全从工作簿中删除格式。必须取消共享工作簿才能执行此操作。要从工作簿中删除上面标识的“正常”单元格类型下的格式[$ -409],右键单击一个单元格,选择自定义,滚动直到找到上面标识的[$ -409]格式类型,然后删除所有格式将回到所谓的一般。