上一篇有人說沒有實際例子,不好理解,於是這期哥們手搓了一個例子;
我搭建了一個日曆表,主要功能就是根據當前月份,會顯示出當月記錄的一些事項;
用的到的函數主要是XLOOKUP,IF,COUNTIFS,CONCAT
這篇稿子的目的絕對不是讓你在excel上搭一個屁用沒有的記事簿,而是我想和你展示一下我在什麼時候使用哪個函數,解決了什麼樣的問題,這樣未來你遇到同樣的情況,你就會想起有一個函數大概有什麼功能,然後百度一下,解決你面臨的問題(那時候你肯定不記得這個函數叫啥了)
這篇稿子兩部分內容,一個是日曆板塊,另一個是記錄功能;
先說下日曆板塊我的邏輯,首先日曆裏一定要有的兩個元素:星期和日期,按照過往我們看電子日曆的習慣,星期的排序是固定的,基於星期的形式來調整每月1號的位置,於是我也參考了這種形式來整理;
首先搭建星期框架:
按照極端情況來算,部分月份可能會跨六週,所以起六行備用;
然後開始填寫日期:
我們如何確定本月1號在表裏的位置?這是一個問題;
我的方案如下:
J2 輸入 TODAY()
這個函數的結果是當前計算機的年月日
J3 輸入 DATE(YEAR(A2),MONTH(A2),1)
DATE函數是把輸入的參數按照日期格式進行整理;
其中YEAR是取參數中的年份;
MONTH是取參數中的月份;
還有個參數是DAY,取的是日期中的日,這裏用不到;
因爲我們要的結果是本月一號,所以我們直接寫個1進去,作爲日的參數;
J4 輸入 WEEKDAY(A3,2)
WEEKDAY這個參數是計算當前日期是星期幾,後面的2是用什麼樣的方式計算;圖中展示的參數各位有興趣可以自己試試看;
通過以上這番操作,我們得到了我們想要的結果;
但是還有個問題,周幾得出來是數字,我們日曆表中寫的漢字,爲了把他們對應起來,我們還需要做一個對照表;並且把我們的數字轉化成漢字,具體如圖;
萬事俱備了,我們現在開始填寫日期:
首先我們在第一行星期中進行判斷,哪一個星期是和1號的星期相同,如果相同,那麼就是一號,如果不相同,那就不是一號;(IF判斷,前面講過)
由於沒有絕對引用,因此在我們複製公式內容填寫下一個單元格的時候,公式錯位了;
這個時候星期對比的內容就不再是“星期四”了,而是我的函數說明,因爲公式複製的時候,也會隨着調整引用的位置,但是有些內容我們不想隨着位置發生變化,例如眼前的“星期四”,所以這裏我們需要用"$"進行絕對引用;
這時候我們再複製這個函數的時候,被我們用"$"鎖住的時候,這個單元格就不會再偏移了;
"$"使用邏輯:一個單元格有兩部分組成,一個是列的字母,一個是行號的數字,例如A2 A3,"$"在那個部分的前面,就會鎖住哪個部分,例如"$A3",這種情況下就是鎖住了A列,不論公式複製到什麼位置,只有3會變,但是A列不會變;反之亦然,"A$3",就是鎖住了3行,而像我們上面使用的"$A$3"這種用法,就是把行和列都鎖住了,不會有任何位移;後面會有個環節介紹"$"的其他用法;
當我們把公式鋪滿第一週,我們得到了我們想要的1號了,接下來要做的就很簡單了,在1的基礎上再加1,就是2號,以此類推,完成全月;
IF函數中,false的結果從文本改成了前一個單元格加1,週四及以後沒有問題,但是前面四天出了BUG;
再次調整第一行,
兩個IF函數嵌套,大致意思是如果週日和月初1號的星期不同,那麼前一個單元格是不是空白的內容,如果不是空白就前一個單元格加1,如果是空白,那當前單元格也顯示空白;複製整行之後沒有問題了;
第一行搞定之後,開始處理後續的內容;由於一號只會出現在第一週,所以第二週開始我們就不判斷一號的位置,用一個加法完成日期的加減就好了,但是問題又來了;
我們出現了6月38號!但是問題不嚴重,我們現在需要知道另一個信息,這個月有多少天?
前面提到過,這些函數的作用了,這裏不再細說了,大致意思是:2023年7月0日的日期數字是幾,得出來的結果是30,因爲2023年7月0號本身得計算結果是2023年6月30日(開個腦洞,DATE(2023,7+1,-1)這個運算結果會是幾號?)
現在我們得到了本月的最大天數,那麼後面的事情就好處理了;
還是IF函數,如果前一個單元格大於等於本月最大天數,那麼當前單元格就返還一個空值,否則就前一個單元格加1;
到這,日曆的部分就完成了;
內個,1600字了,已經夠一篇,剩下的內容等下集吧;
最後放個成品圖
更多遊戲資訊請關註:電玩幫遊戲資訊專區
電玩幫圖文攻略 www.vgover.com