另類的日期計算與IF({1,0}…)

昨天在易學寶微視頻教程交流群里看到一個另類的日期計算題目,給小夥伴們分享一下:

大致說說題目的意思:

B列是英文簡寫的月份,需要計算之前一個月的月份,並且結果同樣為英文月份,效果如C列所示。



輕音樂響起,思考3分鐘……



怎麼樣,想出怎麼計算了嗎?這個題目初看是不是無從下手啊?

說說老祝的解法吧:

C2單元格輸入以下公式,向下複製。

=TEXT(EDATE(B2&-1,-1),"mmm")

接下來,就大致說說公式的意思。

1、首先用B2&-1,將B2單元格的英文月份轉換為"Mar-1"樣式的日期,Excel能夠正確識別出這樣的日期樣式。

2、再用EDATE(B2&-1,-1),計算出"Mar-1"之前一個月的日期。

3、最後使用TEXT函數,格式代碼使用"mmm",再將日期變成簡寫的英文月份。

怎麼樣,我能說明白嗎?

接下來說說IF({1,0})是怎麼回事。

在使用VLOOKUP函數進行逆序查詢的時候,經常會看到有高手這樣寫公式1:

上圖中,C:D是數據源,需要根據F2單元格指定的姓名查詢對應的職務。

G2單元格的公式為:

=VLOOKUP(F2,IF({1,0},D2:D10,C2:C10),2,)

通常情況下,VLOOKUP函數被查詢的值需要位於數據源的首列,也就是從左向右查詢。但是這個數據源中,需要逆向查詢,所以就有了IF({1,0}…)這樣的用法。

接下來再給大家講講=IF({1,0},……)是啥意思吧。

借用胡劍版主的一句話:「數組公式是需要悟的。」

其實不光是數組公式,普通的公式也需要悟。

當明白一個公式的計算結果後,需要慢慢去理解和掌握,直到熟練運用它們。對於較長的公式,我推薦把它大卸八塊,然後再來慢慢理解。

1、IF(條件值,返回值1,返回值2)

解讀上面的公式,首先得弄清楚IF函數的計算原理。這個很簡單,查一下幫助就明白:當條件值為真,則結果為返回值1,當條件值為假,則結果為返回值2。

這個函數實際上可以說成「如果......那麼......,否則......」的語句形式。

即:如果條件值為真,則等於值1,否則等於值2。

例如:

IF(10>5,10,20)=10

IF(10>20,10,20)=20

IF(True,10,20)=10

IF(False,10,20)=20

2、什麼是{1,0}

經過前面帖子的學習,我們知道:{1,0}是一個水平方向的一維數組,它有兩個值,一個是1,另一個是0。

這裡的{1,0}是用來作IF函數的第一個參數,1代替的是「真」,即True,0代替的是「假」,即False。

例如:

IF(1,10,20)=10

IF(0,10,20)=20

在公式中,數值只有0才能代替False,但並不是只有1才能代替True,所有非0的數值都可以代替True。

例如:

IF(-1,10,20)=10

IF(0.2,10,20)=10

3、什麼是{=IF({1,0},D2:D10,C2:C10)}

用了數組{1,0}作IF函數的第一參數,實際上這個公式可以分成兩個公式,即:

IF(1,D2:D10,C2:C10)

IF(0,D2:D10,C2:C10)

兩個公式的計算結果分別為:

IF(1,D2:D10,C2:C10)=D2:D10

IF(0,D2:D10,C2:C10)=C2:C10

這也是IF({1,0},D2:D10,C2:C10)公式的返回結果。

所以,這個公式實際上是調換兩列數據的位置,不知道這樣的解釋對大家是否有幫助?



推薦閱讀:

百年屬相、干支紀年和春節日期速查表
現在日期記法是提前了嗎?
出生日期排八字,為什麼排出來天差地別?
日期鍾
EXCEL技巧四十:日期

TAG:計算 | 另類 | 日期 |