如何使用EXCEL計算生辰八字

「生辰八字」是古人用於記錄出生日期及時間的一種方法,常用於算命等活動,其是否準確小子無力評判,現給出一種由公曆及農曆出生日期使用EXCEL推算生辰八字的方法,供各位參考。  「生辰八字」的基礎是我國古代的干支紀法,就是把「甲乙丙丁戊己庚辛壬癸」十個天干符號與「子丑寅卯辰巳午未申酉戌亥」十二個地支符號按順序循環搭配組成60個干支編號,比如「甲子、乙丑、丙寅、丁卯 ... 癸亥」,俗稱「六十花甲」。由於天干比地支少兩個,所以在組合中只會出現奇數對奇數、偶數對偶數的現象,這在陰陽學上就稱為「陽配陽、陰配陰」(奇數為陽、偶數為陰)。干支紀法就是使用這60個編號來記錄年、月、日、時,每一組都單獨循環使用,周而復始。人出生時的年、月、日、時4組信息,也就4個干支編號共8個字就是所謂的「生辰八字」,說白了就是出生時間。下面讓我們看看如何使用EXCEL來簡便地計算生辰八字。  計算原理:為年、月、日、時分別找到一個起點,也就是干支紀法的第1個編號「甲子」,由於60個干支編號是循環使用的,只要算出其他時點與起點的差值,把差值除以60取其餘數即可得到干支編號。  第一步:創建一張EXCEL表,表名取「干支」,把60個干支編號按順序放到表中以備查用(如下圖)。

  第二步:在同一EXCEL文件創建新表,表名取「計算結果」,並在此表中輸入您的出生時間等相關信息,包括公曆及農曆(註:農曆日期可由公曆日期推算得出,但演算法較為複雜,此處省略)。如圖所示,在B2單元格輸入公曆出生日期,C2單元格輸入出生時間,B3到B5單元格則分別輸入農曆出生日期,B2單元格以備顯示計算結果。這裡我們以公曆1971年11月22日(農曆十月初五)晚10點這一時刻為例來分步計算。

  第三步:計算干支紀年,在同一EXCEL文件創建新表,表名取「年」,內容如下圖所示。

  其中,B2單元格的1984是查閱日曆所得,這是距今最近的一個「甲子年」,B3單元格是出生年份,使用公式 =計算結果!B3 直接引用已經輸入的農曆出生年,B4單元格計算所得,公式為 =MOD((B3-B2),60) ,其值為兩個年份差除以60所得的餘數,即我們所求的干支序號,此例為47,查閱上述「干支」表第4行第7列即可得1971年的干支紀年「辛亥」,把查表過程轉換成計算公式 =INDIRECT(ADDRESS(INT(B4/10)+2,MOD(B4,10)+2,1,1,"干支")) 輸入到B5單元格,就完成了干支紀年的計算過程。  第四步:計算干支紀月,在同一EXCEL文件創建新表,表名取「月」,內容如下圖所示。

  其中,B2及B3單元格的農曆1983年11月是一個「甲子月」,這個數值由以下方法推算而來。  農曆1年12個月(不算閏月),60個干支編號5年一循環,因為地支符號也是12個,與12個月剛好搭配,也就是各月的的地支固定不變(以冬至所在的11月為起點,即記為子月)。至於月的天干,因為是5年一循環,所以與年的天干有固定的對照關係,即年天干為「甲」時,甲月為9月;年天干為「乙」時,甲月上推兩月為7月(因10個天干符號比12個月少2個),如此類推可得,年天干為「戊」或「癸」時「甲」恰在「子月」,即「甲子月」只會出現在年天干為「戊」或「癸」的年份。在第三步中我們已知1984年是甲子年,1983年就一定是癸亥年,天干正好是「癸」,因此可知1983年11月是「甲子月」。  確定了甲子月,我們再把農曆出生年月使用公式 =計算結果!B3 和 =計算結果!B4 分別引用到B3和C3單元格,在B4單元格輸入公式 =MOD((B3-B2)*12+C3-C2,60) 計算兩個月度差除以60的餘數,得到農曆1971年10月的干支序號為35,比照第四步,在B5單元格輸入公式 =INDIRECT(ADDRESS(INT(B4/10)+2,MOD(B4,10)+2,1,1,"干支")) 查得該月為「己亥月」。  注意:如果恰巧是農曆閏月出生的,那就需要查到當月中某一24節氣所在的那一天(閏月只有一個),這一天之前的日子其月天乾等於上一月,之後的日子則等於下一月。另外,據有關專家部門解釋,農曆每月的干支並不固定,主要應由節氣來定,導致月初幾天一般算做上月干支,如果是年初還會有年干支的調整(比如2010年春節前十天出生的人就應該算屬虎了,直到明年大年初二出生的人才算屬兔)。小子實在不喜歡這種做法,這樣干支紀月就失去月的意義啦,又或者說是我們農曆的月度劃分出了問題,所以本演算法中把一個農曆月記為同一干支(年更是如此,沒有人會把自己的屬相精確到如此地步來計),如果您不喜歡就只好去查萬年曆了(小子使用的是國家授時中心發布的日梭萬年曆)。  第五步:計算干支紀日,在同一EXCEL文件創建新表,表名取「日」,內容如下圖所示。

  日的干支是從魯隱公三年(公元前722年)至今在史書上逐日記載的,按60個干支編號順序使用,中間沒有間隔。從公曆日期也可以推算出日的干支,但公式較為複雜,此處省略。小子直接查閱曆書得知公曆1983年12月2日是一個甲子日,我們把它輸入到B2單元格。B3單元格輸入公式 =IF(HOUR(計算結果!C2)=23,計算結果!B2+1,計算結果!B2) 來計算公曆出生日期,計算中還需要考慮時辰問題,我們知道1個時辰等於2小時,子時在昨日23時00分00秒至今日0時59分59秒,因此在計算干支紀日中,23時之後的1個小時應算作次日,即日期值加1,其他時間仍算作今日。在這裡我們之所以改用公曆來計算,是因為看中了EXCEL中的公曆格式的日期值,可以直接使用加減法運算來計算兩個日期之間的天數差及累進日期這個功能,B3單元格公式中的 計算結果!B2+1 就是對日期值直接加1得出下一天的日期值。相反,我們用B3與B2單元格的日期值相減就得到了兩個日期之間的天數差,所以在B4單元格輸入公式 =MOD((B3-B2),60) 就得出了公曆1971年11月22日的干支序號為47,在B5單元格輸入公式 =INDIRECT(ADDRESS(INT(B4/10)+2,MOD(B4,10)+2,1,1,"干支")) 查得該日為「辛亥日」。  第六步:計算干支紀時,在同一EXCEL文件創建新表,表名取「時」,內容如下圖所示。

  干支紀時類似於干支紀月,每天12個時辰60個干支編號5天一循環,「甲子時」在日天干為「甲」或「己」的「子時」,第五步中我們已經得出公曆1983年12月2日為「甲子日」,此日子時即為「甲子時」,我們記為第0個時辰,把該日期及時辰分別輸入到B2及C3單元格。在B3單元格輸入公式 =IF(HOUR(計算結果!C2)=23,計算結果!B2+1,計算結果!B2) 考慮時辰問題計算出生日;C3單元格輸入公式 =IF(HOUR(計算結果!C2)=23,0,INT((HOUR(計算結果!C2)+1)/2)) 由出生時間的小時數來推算時辰編號,例中的22時為11,即亥時。然後我們比照干支紀月演算法在B4單元格輸入公式 =MOD((B3-B2)*12+C3-C2,60) 計算時辰的干支序號,在B5單元格輸入公式 =INDIRECT(ADDRESS(INT(B4/10)+2,MOD(B4,10)+2,1,1,"干支")) 查出公曆1971年11月22日22時為「己亥時」。  最後,我們把上述4個年、月、日、時的干支編號組合在一起放到「計算結果」表的B6單元格,公式為:=年!B5 & " " & 月!B5 & " " & 日!B5 & " " & 時!B5 ,得出如下結果:

  這是一個「亥年亥月亥日亥時」出生的「超級金豬」(關於何為金豬,請參見小子另一篇文章「金豬年的由來及具體年份」),其生辰八字為「辛亥己亥辛亥己亥」。至此,一個簡易的生辰八字計算器就完成了。為檢驗其效果,我們再輸入一個新的時刻:2010年7月11日13時38分(農曆五月三十),這正是小子完成本文的時刻,計算結果為:

  也就是本文的生辰八字為:庚寅 壬午 壬戌 丁未。註:如果按日梭萬年曆則為癸未月,7月6日之前才是壬午月,這樣月與地支間不就沒有固定的搭配關係了?實在是令人討厭,一點也不和諧!不喜歡,俺仍然用自己所算的結果註:由於EXCEL只能處理1900年之後的日期,本計算器對1900年之前的日期無效附:比較有意思的生辰八字出生日期(公曆)出生時間生辰八字1994年10月15日19:00:00 - 20:59:59甲戌 甲戌 甲戌 甲戌1989年5月9日9:00:00 - 10:59:59己巳 己巳 己巳 己巳1983年12月1日21:00:00 - 22:59:59癸亥 癸亥 癸亥 癸亥1980年6月16日11:00:00 - 12:59:59庚申 壬午 庚申 壬午 (猴年馬月 猴日馬時)1978年6月25日11:00:00 - 12:59:59戊午 戊午 戊午 戊午1945年9月13日17:00:00 - 18:59:59乙酉 乙酉 乙酉 乙酉


推薦閱讀:

MBTI16型人格和八字五行十神
論剖腹產擇日優生
論八字十神之正印
免費測八字合婚:夫妻合婚的五大要素簡析
從生辰八字看財富事業可行嗎?

TAG:計算 | 生辰八字 | 生辰 |