Excel公式技巧34: 由公式中日期的處理引發的探索

2021-01-15 完美Excel

學習Excel技術,關注微信公眾號:

excelperfect

 

我們知道,在Excel中,日期是以序號數字來存儲的,雖然你在工作表中看到的是「2020-3-31」,而Excel中存儲的實際上是「43921.00」,整數部分是日期的序號,小數部分是當天時間的序號。這樣方便了日期的表示和存儲,但也同樣帶來了一些問題,例如我們以為是「2020-3-31」,因此會將數據直接與之比較,導致錯誤的結果。本文舉一個案例來講解公式中日期的處理方式。

 

如下圖1所示,計算2020年3月31日對應數據的平均值。

圖1

 

如果使用數組公式:

=AVERAGE($A$2:$A$20=2020-3-31,B2:B20)

得到的結果是不正確的。這個公式相當於求單元格區域B2:B20的數值的平均值:

=SUM(B2:B20)/19

 

首先看看Average函數的語法:

AVERAGE(number1, [number2], …)

 

其中:

1. 參數number1,必需,想求平均值的數字、單元格引用或單元格區域。

2. 參數number2, …,可選,其他想求平均值的數字、單元格引用或單元格區域。參數個數最大可達255個。

 

AVERAGE將對函數或提供的區域中的數字求和,然後除以該區域中的條目或單元格的數量。

 

我們看上面的公式,給AVERAGE函數提供了兩個單元格區域,即:

區域1:$A$2:$A$20=2020-3-31

區域2:B2:B20

 

1. 對於$A$2:$A$20=2020-3-31,將解析為數組:

{FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE}

本來我們以為單元格區域A2:A20中的前6個單元格應該與2020-3-31相匹配,但事實上返回FALSE,這表明不匹配。

 

如果我們將其修改為:$A$2:$A$20="2020-3-31",仍會被解析為數組:

{FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE}

仍然與該區域前6個單元格不匹配。

 

我們再將其修改為:=$A$2:$A$20=DATE(2020,3,31),將解析為數組:

{TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE}

可以看到,已正確與該區域相應的6個單元格相匹配。

 

2. 對於區域B2:B20,將解析為數組:

{10552.52;10564.38;10567.33;10611.84;10624.69;10642.15;10685.98;10733.67;10779.17;10741.98;10785.89;10888.83;10836.15;10841.21;10850.36;10895.86;10907.42;10856.63;10927.07}

即由該區域單元格中的值組成的數組。

 

3. 因此,對於數組公式:

=AVERAGE($A$2:$A$20=2020-3-31,B2:B20)

使用上述中間數組替換:

=AVERAGE({FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE},{10552.52;10564.38;10567.33;10611.84;10624.69;10642.15;10685.98;10733.67;10779.17;10741.98;10785.89;10888.83;10836.15;10841.21;10850.36;10895.86;10907.42;10856.63;10927.07})

返回不正確的結果10752.27。

 

4. 我們來看看正確的公式:

=AVERAGE(IF($A$2:$A$20=DATE(2020,3,31),$B$2:$B$20))

這也是一個數組公式。

 

如果單元格區域A2:A20中的值與日期「2020年3月31日」匹配,則返回TRUE,否則返回FALSE。傳遞給IF函數後,返回單元格區域B2:B20中對應的值,並對這些值求平均值。公式解析過程如下:

=AVERAGE(IF($A$2:$A$20=DATE(2020,3,31),$B$2:$B$20))

解析為:

=AVERAGE(IF({TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE},{10552.52;10564.38;10567.33;10611.84;10624.69;10642.15;10685.98;10733.67;10779.17;10741.98;10785.89;10888.83;10836.15;10841.21;10850.36;10895.86;10907.42;10856.63;10927.07}))

轉換為:

=AVERAGE({10552.52;10564.38;10567.33;10611.84;10624.69;10642.15;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE})

得到正確的結果10593.82。等價於公式:

=AVERAGE(B2:B7)

 

5. 我們注意到,上面的公式中我們沒有提供IF函數的參數value_if_false的值,這是有原因的。

 

如果我們添加IF函數的參數value_if_false,將公式修改為:

=AVERAGE(IF($A$2:$A$20=DATE(2020,3,31),$B$2:$B$20,0))

會得到不正確的結果3345.42。

 

這是因為IF函數會將條件為FALSE的值等於0,這樣上述公式解析為:

=AVERAGE({10552.52;10564.38;10567.33;10611.84;10624.69;10642.15;0;0;0;0;0;0;0;0;0;0;0;0;0})

所得結果為上述值求和後除以19,而不是6。

 

與上述IF函數沒有指定參數value_if_false的值相比較,可以看出,AVERAGE函數忽略提供給其的數組中的FALSE值,並且不會將其計入要平均的數值。

 

6. 其實,Excel 2007及以後的版本中引入了一個函數AVERAGEIFS,可以很好地解決上述問題,其公式為:

=AVERAGEIFS(B2:B20,A2:A20,DATE(2020,3,31))

或者:

=AVERAGEIFS(B2:B20,A2:A20,"2020-3-31")

 

很有意思的討論!

相關焦點

  • excel數據處理技巧:組合函數統計產品批號
    最近小編收到一位群友的求助,他說自己被excel中的編號問題給難住了。這是這麼回事呢?編號不就是1、2、3、4、5嗎,直接下拉單元格就能搞定,這有何難?一起來看看下面這篇文章中excel數據處理技巧。近日看到一個群友的求助,覺得比較有意思,想和大家分享一下。學習更多技巧,請收藏部落窩教育excel圖文教程。
  • excel技能提升,excel公式的複製和刪除的幾個小技巧
    我們在實際工作和生活中,經常會使用到excel公式,公式複製有幾個簡單的小方法,比如我常用快捷鍵ctrl+c複製公式,ctrl+v粘貼公式,ctrl+d向下填充,ctrl+r向右填充,可以使用滑鼠向下或者向右拖拽進行公式複製,刪除公式就相對更簡單了,只需要選中公式,然後按delete
  • excel日期函數技巧:到期時間提醒的幾種設置方法
    關於這些何時到期的自動提醒,我們可以使用excel中的到期提醒功能實現。今天將給大家提供5種製作到期提醒的方法,第一種最簡單,最後一種最人性化並且能實現篩選控制。學習更多技巧,請收藏關注部落窩教育excel圖文教程。
  • 「Excel技巧」Excel快速輸入當前日期時間的快捷法及函數法
    常年接觸excel,肯定會跟日期時間打交道。掌握一些關於日期和時間的輸入方法和技巧,可以幫助你快速完成工作。現在就來看看關於日期時間的輸入技巧及函數輸入法。一、快速獲取當前日期時間1、返回當前日期和時間函數法:在目標單元格裡輸入公式:=now()。快捷鍵法:在鍵盤上先按下【Ctrl+;】,然後再按下【Ctrl+Shift+;】,即插入了當前的日期和時間。
  • Excel函數公式:實用的日期函數公式全集
    實際的工作中,用到日期的地方非常的多,如果每次都是手動去處理,那將會非常的麻煩。一、獲取當前系統日期及時間。方法:1、選定目標單元格。方法:在目標單元格中輸入公式:=YEAR(A3)。三、MONTH:計算月份。方法:在目標單元格中輸入公式:=MONTH(A3)。四、DAY:計算號數。方法:在目標單元格中輸入公式:=DAY(A3)。
  • Excel技巧:5個極度燒腦,但極其實用的Excel函數公式!
    B2公式:=INDEX(E:E,MATCH(,MMULT(-ISERR(FIND(MID(D$1:D$5,COLUMN(A:X),1),A2)),ROW($1:$24)),))3、 數字小寫轉大寫,燒腦指數★★★Excel自帶的小寫轉換大寫的自定義格式,或者函數,都無法處理角和分的問題。
  • 如何將excel中由公式得到的數字複製成普通數字
    雷鋒崔老師經驗用到excel來計算大量的數據,更習慣於利用簡單的公式來得到一些想要的數字,但是這樣的得出來的公式是無法進行複製粘貼的,因為一旦複製粘貼後就更換了公式數據了。那麼如何才能複製呢?雷鋒崔老師為您執著。
  • Excel公式技巧51: 根據條件來排序(續)
    學習Excel技術,關注微信公眾號:excelperfect 在《Excel公式技巧50:根據條件來排序
  • excel函數公式應用:多列數據條件求和公式知多少?
    學習更多技巧,請收藏關注部落窩教育excel圖文教程。 先來看一下什麼是按條件求多列數據之和。 類似下圖這樣的數據,需要根據G列的產品名稱在H列匯總數據。條件區域在B列,而要求和的數據在C、D、E三列中。這種求和就是按條件求多列數據之和,簡稱多列條件求和。
  • excel數字複製不了?如何複製excel上的公式結果
    很多小夥伴們都向雷鋒崔老師詢問說如何將通過公式運算得到的excel公式進行複製粘貼而不發生錯誤結果呢?雷鋒崔老師教你如何如何複製excel上的公式結果請看下文首先,用戶打開自己需要處理的excel數據文件,之後查看這個數字是否是通過公式計算得到了
  • 身為會計不得不知的Excel公式,整理全了!收藏!
    在會計的電腦中,經常看到海量的Excel表格,員工基本信息、提成計算、考勤統計、合同管理....看來再完備的會計系統也取代不了Excel表格的作用。於是,儘可能多的收集會計工作中的Excel公式,所以就有了這篇Excel公式+數據分析技巧集。
  • excel根據出生日期自動計算(年齡、星座、生肖)的方法
    在工作辦公中,我們基本都會使用到excel軟體編輯表格,excel軟體中的函數公式可以快速的對表格裡的內容進行計算,從而大大的減輕了我們的工作量。這次小編給大家分享下,根據excel表格裡的出生日期,自動計算年齡、生肖和星座的方法。
  • excel數據統計:三個公式提高統計工作效率
    在日常的辦公中,我們經常會統計excel裡各種數據。在excel裡關於統計的函數也是數不勝數,SUM、SUIMIF、SUMIFS、COUNT、COUNTIFS等等。第一類問題:對指定時間段的數據進行匯總例如在一組銷售數據中,需計算出2018年4月1日至2018年6月30日期間的銷售額合計。可以使用公式=SUMIFS(B:B,A:A,">=2018-4-1",A:A,"<=2018-6-30")得到所需要的結果。在這個公式中,用到了SUMIFS函數進行匯總。
  • Excel函數公式:含金量超高的8大Excel實用技巧解讀,絕對的乾貨
    Excel中,功能最強大的莫過於函數公式,但是對於一般的用戶而言,函數公式顯得有點兒「高大上」,還不如 一些實用技巧來的實惠,所以我們今天給大家帶來一些實用性非常強的技巧,希望對大家的工作有所幫助。一、整理日期。目的:將不規範的日期格式進行整理。
  • Excel表格常用九種公式,wps表格公式,Excel公式大全
    日常工作中,難免會和表格打交道,若能熟練使用各種表格公式,便能更高效地完成工作。今日小編給大家帶來了Excel表格常用九種公式,希望對大家日常生活工作有所幫。1- 求和公式 1、多表相同位置求和(SUM)示例公式:=SUM((Sheet1:Sheet3!
  • Excel函數公式:Excel中圓圈數字錄入技巧
    一、圓圈數字生成技巧。目的:生成圓圈數字。方法:1、選定目標單元格。2、在目標單元格中輸入公式:=UNICHAR(ROW(A1)+9311)。3、Ctrl+Enter填充。二、括號數字生成技巧。2、輸入公式:=UNICHAR(ROW(A1)+9331)。3、Ctrl+Enter填充。三、羅馬數字生成技巧。目的:將對應的中文數字生成羅馬數字。
  • excel篩選技巧:不用函數公式也能快速多對多查找
    說到excel中的篩選,想必大家早已是了如指掌,不過增強版的篩選,你聽說過嗎?它可比普通的篩選厲害多了,不僅能實現excel中的一對多查找,就連複雜的多對多查找也不在話下!趕緊來看看吧!*********說起一對多查找,大家首先想到的就是萬金油公式,以前也分享過一篇相關的教程《Excel萬金油公式INDEX-SMALL-IF-ROW篩選函數公式解讀》。
  • 【工具系列】Excel使用技巧(二)—常用7個Excel公式複製高級技巧
    公式複製,是每個excel用戶天天都要進行的操作。也許你會認為公式複製還不簡單嗎,複製粘貼,或拖動複製。
  • HR常用的Excel函數公式大全(共21個),幫你整理齊了!
    一周前,蘭色交給小助理木炭一個任務,儘可能多的收集HR工作中的Excel公式。蘭色進行了整理編排,於是有了這篇本平臺史上最全HR的Excel公式+數據分析技巧集。  一、員工信息表公式  E:F,2,)  註:附帶示例中有地址庫代碼表
  • excel表格怎麼畫趨勢線並顯示趨勢線公式?
    excel表格怎麼畫趨勢線並顯示趨勢線公式?excel中添加的趨勢線是圖表中的一種擴展線,它可以直觀的看出數據的趨勢,根據實際數據預測未來數據,處理幾百萬條數據的時候效果尤為突出,還可以添加公式,下面分享製作的過程先在已經進入大數據時代,數據分析變的越來越重要,excel中添加的趨勢線是圖表中的一種擴展線,它可以直觀的看出數據的趨勢,根據實際數據預測未來數據,處理幾百萬條數據的時候效果尤為突出,還可以添加公式,給人最直觀的結論,