Weekday函數(shù) 語(yǔ)法:Weekday(serial_number,[return_type]) 說(shuō)明:返回某日期為星期幾。 Serial_number 必需。一個(gè)序列號(hào),代表嘗試查找的那一天的日期。 Return_type 可選。用于確定返回值類型的數(shù)字。 1 或省略 數(shù)字 1(星期日)到數(shù)字 7(星期六)。 2 數(shù)字 1(星期一)到數(shù)字 7(星期日)。 3 數(shù)字 0(星期一)到數(shù)字 6(星期日)。 11 數(shù)字 1(星期一)到數(shù)字 7(星期日)。 12 數(shù)字 1(星期二)到數(shù)字 7(星期一)。 13 數(shù)字 1(星期三)到數(shù)字 7(星期二)。 14 數(shù)字 1(星期四)到數(shù)字 7(星期三)。 15 數(shù)字 1(星期五)到數(shù)字 7(星期四)。 16 數(shù)字 1(星期六)到數(shù)字 7(星期五)。 17 數(shù)字 1(星期日)到 7(星期六)。 示例: =WEEKDAY("2008-2-14",2) 值為4(表示星期四) 也可以這樣 =WEEKDAY(DATE(2008,2,14),2) =WEEKDAY(DATE(2008,2,14)) 值為5(表示星期四) 補(bǔ)充知識(shí)點(diǎn):根據(jù)日期求星期,除了使用Weekday函數(shù)外,我再列舉一些方法如下 方法二=text("2008-8-8","aaaa") 值為 星期五 方法三=mod(date(2008,8,8)-2,7)+1 值為 5 方法四 A1="2008-8-8" =MOD(MOD((INT(MID(YEAR(A1),2,2)/4)+10),12)+MID(IF(YEAR(A1)/7=0,"512503514624","622503514624"),MONTH(A1),1)+DAY(A1),7) 值為5
方法五 使用VBA內(nèi)置函數(shù)DatePart
Sub 求星期幾() Debug.Print "2010年8月24日的星期"; DatePart("w", #8/24/2010#, vbMonday) Debug.Print "2010年8月24日是星期" & Application.Text(DatePart("w", #8/24/2010#, vbMonday), "[dbnum1]") End Sub
方法四原理: 只需要知道三個(gè)代碼:日期代碼+月份代碼+年份代碼,就可以秒算任意年份任意日期的星期數(shù)方法日期代碼指的是日期數(shù),如3月18號(hào),日期代碼為18。4月7號(hào),日期代碼為7。月份代碼(需要小小記憶) 五月 是 0 八月 是 1 二月 三月 十一月 是 2 六月 是 3 九月 十二月 是4 四月 七月 是5 一月 十月 是 6 如果遇到閏年 則二月代碼變?yōu)?,一月代碼變?yōu)?,其它不變。即,非閏年的月份代碼為622503 514624,閏年的月份代碼為512503 514624。年份代碼 舉個(gè)例子 2010年的代碼,我們用尾數(shù)10除以4(忽略余數(shù))再加上10得到數(shù)字12,再用12除以7,得到的余數(shù)5就是2010年的代碼。 也就是說(shuō),心算出2000到2099任意年份的代碼,只需將其后兩位數(shù)X除以4(忽略余數(shù)),然后與X相加,并除以7就可以了,得到的余數(shù)就是其年份代碼。10年的年份代碼是5,11年年份代碼為6。秒算任意日期的星期數(shù) 如,我們算一下2010年4月25日 日期代碼25 月份代碼5 年份代碼5 日期代碼+月份代碼+年份代碼=25+5+5=35 35是7的倍數(shù),所以2010年4月25日是星期日 再比如算一下2010年10月1日 日期代碼1 月份代碼6 年份代碼5 日期代碼+月份代碼+年份代碼=1+6+5=12 12除以7余5,所以2010年10月1日是星期五 如果得到的代碼和是小于7的數(shù),那么此數(shù)直接是星期數(shù) 如果得到的代碼和是大于7的數(shù),那么將該數(shù)除以7得到的余數(shù)為星期數(shù)。 原理:蔡勒公式 W=[C/4]-2C+y+[y/4]+[26(m+1)/10]+d-1 (其中[ ]為取整符號(hào)) 其中,W是所求日期的星期數(shù)。如果求得的數(shù)大于7,可以減去7的倍數(shù),直到余數(shù)小于7為止。c是公元年份的前兩位數(shù)字,y是已知公元年份的后兩位數(shù)字;m是月數(shù),d是日數(shù)。方括[ ]表示只截取該數(shù)的整數(shù)部分。還有一個(gè)特別要注意的地方:所求的月份如果是1月或2月,則應(yīng)視為前一年的13月或14月。所以公式中m 的取值范圍不是1-12,而是3-14。 大家讀懂后,我給出一些歷史時(shí)期,以便讀者進(jìn)行驗(yàn)算。 (1)美國(guó)總統(tǒng)林肯遇刺,1865年4月14日,星期5; (2)美國(guó)獨(dú)立紀(jì)念日,1776年7月4日,星期日; (3)日本偷襲珍珠港,1941年1941年12月7日; 最后還有一點(diǎn),工元1582年羅馬教皇曾經(jīng)下令修改歷法,把這一年的10月4日(星期4)的下一天改為10月15日。所以在1582年以前的日子,不能加以套用。
|