首页 > Excel > 超有魅力的Excel 自定义数字格式代码

超有魅力的Excel 自定义数字格式代码

2010年7月26日 Surda 发表评论 阅读评论

写此博文的灵感来源于一个公历日期转农历日期的一个实例。

 

日期 转旧历
2010-7-26 庚寅年六月十五日

公式:

=MID(“庚辛壬癸甲乙丙丁戊己”,MOD(TEXT(A2,”[$-130000]e”),10)+1,1)&MID(“申酉戌亥子丑寅卯辰巳午未”,MOD(TEXT(A2,”[$-130000]e”),12)+1,1)&TEXT(A2,”[$-1E130000]年M月”&IF(-TEXT(A2,”[$-130000]d”)<-10,,”初”)&”D日”)

可以看到公式中蓝色字体标注的TEXT()函数第二参数代码[$-130000],这是我第一次见这种写法,好奇心使我不停的搜索数字格式代码相关网页,最后在微软官网发现创建符合国际惯例的自定义数字格式(URL http://office.microsoft.com/zh-cn/excel-help/HA001034635.aspx

由此了解到[$-130000]其实缩写,写全应该是[$-00130000]。像这类出现在自定义格式代码开始处括号中的代码称之为区域设置规范,其作用是限制输出数字格式的数字形状、输出语言及(日期类型)。

案例分析 (将当前日期转换为农历)

=TEXT(TODAY(),”[$-1E130000]YYYY年M月D日”)

公式输出结果为: 二○一○年六月十五日

在上面公式中 [$-1E130000]由三个格式代码的组件构成:

1、1E 为数字形状 输出简体中文1,中文小写一

2、13 为日期类型 输出蒙古日期

3、0000 为区域语言 Microsoft Excel 输出“控制面板”中设置的系统设置

附:三个格式代码对照表

数字格式代码组件
十六进制数值 数字形状
01 西方语言
02 阿拉伯印度语
03 扩展阿拉伯印度语
04 梵语
05 孟加拉语
06 果鲁穆奇语
07 古吉拉特语
08 奥里雅语
09 泰米尔语
0A 泰卢固语
0B 卡纳达语
0C 马拉雅拉姆语
0D 泰语
0E 老挝语
0F 藏语
10 缅甸语
11 埃塞俄比亚语
12 高棉语
13 蒙古语
1B 日语 1
1C 日语 2
1D 日语 3
1E 简体中文 1,中文小写
1F 简体中文 2,中文大写
20 简体中文 3 ,全角数字
21 繁体中文 1,繁体小写
22 繁体中文 2,繁体大写
23 繁体中文 3,全角数字
24 朝鲜语 1
25 朝鲜语 2
26 朝鲜语 3
27 朝鲜语 4

 

日期类型组件
十六进制数值 日历
01 公历(本地化)
02 公历(美国)
03 日本日历(和历)
04 台湾日历
05 朝鲜日历(檀纪)
06 回历(阿拉伯农历)
07 泰语
09 公历(中东法语)
0A 公历(阿拉伯语)
0B 公历(转译英语)

区域设置和语言目标组件
十六进制数值
语言 LCID
0401 阿拉伯语 1025
0402 保加利亚语 1026
0403 加泰罗尼亚语 1027
0404 中文(繁体) 1028
0405 捷克语 1029
0406 丹麦语 1030
0407 德语 1031
0408 希腊语 1032
0409 英语(美国) 1033
040B 芬兰语 1035
040C 法语 1036
040D 希伯来语 1037
040E 匈牙利语 1038
040F 冰岛语 1039
0410 意大利语 1040
0411 日语 1041
0412 朝鲜语 1042
0413 荷兰语 1043
0414 挪威语(伯克梅尔) 1044
0415 波兰语 1045
0416 葡萄牙语(巴西) 1046
0418 罗马尼亚语 1048
0419 俄语 1049
041A 克罗地亚语 1050
041B 斯洛伐克语 1051
041C 阿尔巴尼亚语 1052
041D 瑞典语 1053
041E 泰语 1054
041F 土耳其语 1055
0420 乌尔都语 1056
0421 印度尼西亚语 1057
0422 乌克兰语 1058
0423 白俄罗斯语 1059
0424 斯洛文尼亚语 1060
0425 爱沙尼亚语 1061
0426 拉脱维亚语 1062
0427 立陶宛语 1063
0428 塔吉克语 1064
0429 波斯语 1065
042A 越南语 1066
042B 亚美尼亚语 1067
042C 阿塞拜疆语(拉丁文) 1068
042D 巴斯克语 1069
042F 马其顿语 1071
0436 南非语 1078
0437 格鲁吉亚语 1079
0438 法罗语 1080
0439 印地语 1081
043A 马耳他语 1082
043D 意第绪语 1085
043E 马来语 1086
043F 哈萨克语 1087
0440 吉尔吉斯语 1088
0441 斯瓦希里语 1089
0442 土库曼语 1090
0443 乌兹别克语(拉丁文) 1091
0444 鞑靼语 1092
0445 孟加拉语 1093
0446 旁遮普语 1094
0447 古吉拉特语 1095
0448 奥里雅语 1096
0449 泰米尔语 1097
044A 泰卢固语 1098
044B 卡纳达语 1099
044C 马拉雅拉姆语 1100
044D 阿萨姆语 1101
044E 马拉地语 1102
044F 梵语 1103
0450 蒙古语 1104
0456 加利西亚语 1110
0457 贡根语 1111
0458 曼尼普尔语 1112
0459 信德语 1113
045A 叙利亚语 1114
045B 僧伽罗语 1115
045C 聪加语 1116
045D 因纽特语 1117
045E 阿姆哈拉语 1118
045F 塔马赛特文(柏柏尔/阿拉伯) 1119
0460 克什米尔语(阿拉伯) 1120
0461 尼泊尔语 1121
0462 弗里斯南语 1122
0463 普什图语 1123
0464 菲律宾语 1124
0465 迪维希语 1125
0466 克瓦语 1126
0467 富尔贝语 1127
0468 豪撒语 1128
0469 伊比比奥族语 1129
046A 约鲁巴语 1130
0470 伊博语 1136
0471 卡努里语 1137
0472 库希特语 1138
0473 提格里尼亚语(埃塞俄比亚) 1139
0475 夏威夷语 1141
0476 拉丁语 1142
0477 索马里语 1143
0478 彝语 1144
0804 中文(简体) 2052
0807 德语(瑞士) 2055
0809 英语(英国) 2057
0814 挪威语(尼诺斯克) 2068
0816 葡萄牙语(葡萄牙) 2070
081A 塞尔维亚语(拉丁文) 2074
082C 阿塞拜疆语(西里尔文) 2092
0843 乌兹别克语(西里尔文) 2115
0873 提格里尼亚语(厄立特里亚) 2163
085F 塔马赛特文(拉丁文) 2143
0C07 德语(奥地利) 3079
0C09 英语(澳大利亚) 3081
0C0A 西班牙语 3082
0C0C 法语(加拿大) 3084
0C1A 塞尔维亚语(西里尔文) 3098
1009 英语(加拿大) 4105

 

注:在实际应用中以上3个代码组件可自左至右依次省略。如[$-130000]就省略第一组件。

这种自定义代码格式不常用,但在某些情况下还是比较实用。如:

EXCEL计算今天是星期几?国人通常叫今天是周几?

周一 =TEXT(“2010-7-26″,”[$-804]aaa”)

常规写法如下

周一 =TEXT(WEEKDAY(“2010-7-26″)-1,”周[dbnum1]#”)
周一 =TEXT(WEEKDAY(“2010-7-26″),”周[dbnum1]aaa”)

其他表现形式

星期一 =TEXT(“2010-7-26″,”aaaa”)
Monday =TEXT(“2010-7-26″,”dddd”)
Mon =TEXT(“2010-7-26″,”ddd”)
=TEXT(“2010-7-26″,”aaa”)

老一辈还喜欢用农历,比如结婚要看“好日子”,好日子就是根椐农历测算的。今天是农历几号?

二○一○年六月十五日 =TEXT(“2010-7-26″,”[$-1E130000]YYYY年M月D日”)

 

surda在此就不一一罗列,自行发散。如果想了解更多TEXT()函数用法,或许这些对你有用:

ShareOn:
  •  
  1. karry
    2010年7月28日02:07 | #1

    TEXT()函数很强大,博主很强大。

  2. 2010年7月28日02:09 | #2

    @karry
    :)TEXT()用法还是很广的,特别是在处理某些文本型日期、文本型数字等。

  1. 本文目前尚无任何 trackbacks 和 pingbacks.