排八字排大運(yùn),可以用excel搭建一個(gè)表格實(shí)現(xiàn)嗎?試一下吧 說干就干,經(jīng)過數(shù)日嘗試,終于實(shí)現(xiàn)了手機(jī)上排盤軟件的主要功能。 界面如下: 主要功能: 1,在黃色表格處,輸入男女性別和陽歷生辰,表格可自動(dòng)計(jì)算出四柱干支及十神屬性。 2,點(diǎn)擊表中排大運(yùn)按鈕,則表格下半部分自動(dòng)計(jì)算出生辰對(duì)應(yīng)的大運(yùn),當(dāng)前大運(yùn)自動(dòng)用綠色背景著重顯示。當(dāng)前流年用棕色背景著重顯示。 在表格創(chuàng)建中,地支藏干,對(duì)應(yīng)于日元的十神屬性,12生旺死絕表,空亡,60甲子納音這幾項(xiàng)內(nèi)容,主要用VLOOKUP函數(shù)以查詢模式從子表格提取,比較簡(jiǎn)單。干支對(duì)應(yīng)的某一個(gè)字,用MID函數(shù)來提取文本。 其他的,用NOW函數(shù)顯示當(dāng)前時(shí)間。 陽歷與陰歷的轉(zhuǎn)化,采用了簡(jiǎn)單的函數(shù)形式,陰歷=MID(' 甲乙丙丁戊己庚辛壬癸',MOD(TEXT(G3,'[$-130000]e')-3,10)+1,1)&MID('子丑寅卯辰巳午未申酉 戌亥',MOD(TEXT(G3,'[$-130000]e')-4,12)+1,1)&'年'&IF(TEXT(G3,' [$-130000]m')*1=12,' 臘',IF(TEXT(G3,' [$-130000]m')*1=1,' 正',TEXT(G3,' [$-130000][DBNum1]m')))&'月'&IF(TEXT(G3,' [$-130000]d')-9<=1,'初',IF(TEXT(G3,' [$-130000]d')-29>=1,'卅',IF(TEXT(G3,' [$-130000]d')-19>=1,'廿','十')))&IF(RIGHT(TEXT(G3,' [$-130000]d'),1)*1=0,'',TEXT(RIGHT(TEXT(G3,' [$-130000]d'),1)*1,'[DBNum1]d'))&'日', 公式中G3是陽歷所在單元格。 其它信息的提取,用了INDEX與MATCH的組合函數(shù)。 過程中遇到的難點(diǎn)主要有兩個(gè), 1,陽歷生辰如何轉(zhuǎn)化為四柱八字? 2,在四柱八字基礎(chǔ)上如何匹配出大運(yùn)信息? 這些對(duì)于老師傅來說這些都不難,但對(duì)于excel中自動(dòng)運(yùn)算,已超出了個(gè)人舊有的知識(shí)范圍,只能在學(xué)習(xí)中解決。 一般函數(shù)不能實(shí)現(xiàn)問題中較復(fù)雜的邏輯運(yùn)算,最后采用excel VBA功能來實(shí)現(xiàn)了它。 由陽歷轉(zhuǎn)化為干支紀(jì)年的四柱,涉及到歷法的基礎(chǔ)內(nèi)容,而地球并非正圓,二十四節(jié)每節(jié)跨過黃經(jīng)15度,冬春節(jié)日間隔稍長(zhǎng),夏秋節(jié)日間隔稍短,最靠譜的辦法是用天文臺(tái)的數(shù)據(jù)來修正,這是一般人不能實(shí)現(xiàn)的事。 四柱的轉(zhuǎn)換,借用了已有的兩個(gè)VBA模塊,一個(gè)校正節(jié)氣,一個(gè)換算。 節(jié)氣換算代碼如下: 四柱換算代碼如下: 使用上面兩個(gè)excel的代碼模塊,第一個(gè)問題的四柱換算解決。 第二個(gè)問題是大運(yùn)推算。同樣涉及二十四節(jié)的確定及起運(yùn)時(shí)刻的確定,并且每段大運(yùn)在不同年份,且要自動(dòng)生成表格一一呈現(xiàn),一開始感覺很難,不過對(duì)vba有了一些了解后,再找成熟的工具模板容易了不少,看懂了代碼,就可以隨便拿捏它。 推算大運(yùn)的代碼如下: 此前,個(gè)人對(duì)于VBA一竅不通,深入了解后,感覺是挺有用,這并不是一個(gè)落伍了的工具,如果經(jīng)常處理復(fù)雜的流程表格,還是非常值得花些時(shí)間學(xué)一學(xué)的。 成年人已經(jīng)對(duì)很多事熟視無睹,能做一些挑戰(zhàn)自己知識(shí)邊界的事,有動(dòng)力又好玩,這是近來有益的一次收獲。 |
|