上面给出的答案只是因为Excel认为1900年1月1日是周日*,而默认情况下,Excel是将周日作为星期几函数的第一天。
在该方法中,你实际上计算的是一周中的某一天,作为一个数字,然后根据这个数字解释为日期,将其格式化为一天。例如,如果你的日期是1/2/2003,你使用WEEKDAY函数,结果是7(=星期六)。当你将其格式化为 “ddddd "时,你实际上得到的是Excel中第7天的日名,因为它是 "纪元",即7/1/1900,恰好是星期六/*。如果有人打开这个公式时选择了使用基于1904年的日期系统,那么这个公式就会被打破,因为1/1/1904不是星期天,而是星期五。(是的,我知道几乎没有人使用这个,但你不会想建立一个依赖于这个的解决方案吧?)
你可以通过使用
=TEXT(A1,"dddd")
使公式更短、更快、更稳健,当然,你也可以像前面建议的那样,用自定义格式来格式化日期单元格,这取决于你是否真的需要在单独的列中使用这些格式。我经常使用日期格式,比如
ddd dd mmm yyyy
来表示例如Sat 01 Feb 2003,所以日期是明确的,但也显示工作日的名称。
如果你想在邮件合并中某个地方明确地使用工作日,那么使用第二列和TEXT函数是非常必要的(例如),同样地,对于像货币这样的东西,Excel也是如此。 Word合并传递的是实际的基础存储值,而不是屏幕上的格式化版本,所以不管单元格的格式如何,Word都会看到一些可怕的数字。一个真正的文本字段被 "原样 "传递,并在Word中正确显示。
*事实上,今天是星期一,但Excel是为了匹配Lotus 1-2-3中的错误日期而编写的,Lotus 1-2-3将1900年视为闰年,而实际上不是。
我发现嵌套IF
语句可能会很麻烦,但确实有效。不过,如果你想节省一点打字量,你可以试试这个。
=CHOOSE(WEEKDAY(A2), "Sun","Mon","Tue","Wed","Thur","Fri","Sat")
或者,如果你需要全名:
=CHOOSE(WEEKDAY(A2), "Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday")
在这个例子中,"A2 “可以是任何包含相关日期的单元格(或公式)。例如,"A2 "可以是包含相关日期的任何单元格(或公式)。
=CHOOSE(WEEKDAY(TODAY()), "Sun","Mon","Tue","Wed","Thur","Fri","Sat")
可以打印出今天的三个字母缩写。
A1单元格。1/8/2009 B1单元格:=A1然后按ctrl+1(格式化单元格)选择数字选项卡,点击自定义,然后在类型txt框上输入 “DDDD"。
你也可以通过在格式前使用[$nnn]来本地化答案(所以自定义代码是:[$nnn]ddd;@)。
我想你可以用Number格式做实验,改变语言字段,然后改回自定义格式。
显示当前日期
=TEXT(WEEKDAY(MONTH(TODAY())),"dddd")
显示当前日期和所需的必要文字。
=CHOOSE(WEEKDAY(MONTH(TODAY())), "S-U-N-D-A-Y","M-O-N-D-A-Y","T-U-E-S-D-A-Y","W-E-D-N-E-S-D-A-Y","T-H-R-S-D-A-Y","F-R-I-D-A-Y","S-A-T-U-R-D-A-Y")