1、本篇所说的文本日期是指用汉字直接输入的日期,非日期格式转换成的文本日期。这种文本日期,不是日期格式,不便于统计。
2、比如从日期中提取年份,就会出现错误值。
3、因此要想办法进行转换,首先想到的是要将年、月、日分别提取出来,再转换成阿拉伯数字。提取年份比较方便,取左边四个字符即可:=LEFT(A2,4)
4、然后再将提取出来的字符,转为阿拉伯数字,但EXCEL中可以利用文本函数将阿拉伯墙绅褡孛数字转换成中文小写的剞麽苍足数字,但没有将中文数字转换成阿拉伯数字的函数,此时需要借助反转换,再用MATCH函数查找其顺序:=MATCH(LEFT(A2,4),NUMBERSTRING(ROW($1:$3000),3),0),数组公式,即同时按住Ctrl+Shift+Enter结束公式编辑,会自动生成一对“{}”。
5、但有时候,这样用公式还是会出现错误值,这是因为当年份中有“〇”这个字符时,这个亨蚂擤缚字符可能是插入的符号,也有可能是从祈硗樘缎其他地方复制过来的,这个符号与EXCEL中认可的数字“○”看上去像,但并不是一个字符,还要用下替换函数:=MATCH(SUBSTITUTE(LEFT(A2,4),"〇","○"),NUMBERSTRING(ROW($1:$3000),3),0)
6、同样的月份提取转换用数组公式:=MATCH(SUBSTITUTE(MID(A2,6,2),"月",""),SUBSTITUTE(NUMBERSTRING(ROW($1:$12),1),"一十","十"),0)
7、日的提取公式:=MATCH(SUBSTITUTE(SUBSTITUTE(MID(A2,8,3),"月",""),"日",""),SUBSTITUTE(NUMBERSTRING(ROW($1:$31),1),"一十","十"),0)
8、然后再用连接符“&”将各部分连接起来:=MATCH(SUBSTITUT苇质缵爨E(LEFT(A2,4),"〇","○"),NUMBERSTRING(ROW($1:$3000),3),0)&"年"&MATCH(SUBSTITUTE(MID(A2,6,2),"月",""),SUBSTITUTE(NUMBERSTRING(ROW($1:$12),1),"一十","十"),0)&"月"&MATCH(SUBSTITUTE(SUBSTITUTE(MID(A2,8,3),"月",""),"日",""),SUBSTITUTE(NUMBERSTRING(ROW($1:$31),1),"一十","十"),0)&"日"
9、上面是直观想到的办法,公式较长,注意到EXCEL中日期都是按序列号存储的,所以可以直接用序列号反转查询:=MATCH(SUBSTITUTE(A2,"〇","○"),TEXT(ROW($1:$60000),"[dbnum1]e年m月d日"),0)
10、这样转换出来的是常规格式的数值,再转换为日期格式即可。
11、上面的公式都是数组公式,利用LOOKUP函数的向后兼容性,还可以设计出按普通方法输入的公式:=LOOKUP(1,0/(SUBSTITUTE(A2,"〇","○")=TEXT(ROW($1:$60000),"[dbnum1]e年m月d日")),ROW($1:$60000))