精通Excel數組公式005:比較數組運算及使用一個或多個條件的聚合計算

2021-02-22 完美Excel

 

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

excelperfect

 

下面是Excel的比較運算符:

=  等於

<> 不等於

> 大於

>= 大於等於

< 小於

<= 小於等於

 

在諸如基於條件查找最小值或最大值、計算標準偏差等情形時,Excel沒有提供相應的內置函數,必須編寫數組公式,其中往往涉及到在數組中使用比較運算符。

 

如下圖1所示,在單元格區域A3:B8中記錄了城市名和對應的時間,想要知道每個城市對應的最小時間。我們知道,可以使用MIN函數來求一組數值的最小值,但是如何分離出每個城市並分別求出它們對應的時間最小值呢?

圖1

 

使用數組公式

Excel中沒有一個MINIF函數來根據條件求相應的最小值,可以使用MIN/IF函數組合來實現。在單元格E3中的數組公式如下:

=MIN(IF($A$3:$A$8=D3,$B$3:$B$8))

向下拉至單元格E5。

 

在公式中:

$A$3:$A$8=D3

將單元格區域A3:A8中的城市名與單元格D3中的城市名相比較,生成數組:

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

接著,IF函數根據比較的結果,從單元格區域B3:B8中獲取單元格D3城市的時間:

{FALSE;FALSE;9;FALSE;FALSE;6}

IF函數忽略了參數value_if_false,默認值為FALSE。

傳遞給MIN函數:

=MIN({FALSE;FALSE;9;FALSE;FALSE;6})

得到單元格D3城市的最小時間。注意,MIN函數忽略其參數中的邏輯值。

 

使用資料庫函數

在Excel中,有一組基於判斷條件執行計算的資料庫函數,共12個,也稱之為D-函數,例如DMIN、DMAX和DSUM函數。當執行單獨的計算且數據集具有欄位名稱(列標籤)時,這些函數非常強大。

 

如下圖2所示,使用DMIN函數來計算指定城市的最小時間。

圖2

 

如果僅要知道某個城市的最小時間,使用DMIN函數比使用數組公式更簡單且對於大數據集來說速度更快。然而,使用DMIN函數需要在某單元格中輸入欄位名並在該欄位名下方輸入判斷條件,這意味著對於每次計算都需要在上下兩個單元格中輸入相應的內容。如下圖3所示,顯然,對於多個值不能像以前那樣簡單地下拉公式,這是其不利之處。

圖3

 

有時候,對於非常大的數據來說公式計算時間過長是個問題,下圖4展示了一個解決方案,充分利用D-函數優於數組公式計算的優勢。

圖4

 

下面是創建上述解決方案的步驟:

1. 在單元格E3中創建公式。

2. 在單元格區域D6:D8中輸入所有的城市名稱。

3. 在單元格E5中,創建指向單元格E3的公式。

4. 選擇單元格區域D5:E8,按Alt、D、T鍵,(或者單擊功能區「數據」選項卡「預測」組中的「模擬分析——模擬運算表」命令)打開「模擬運算表」對話框,如下圖5所示。

圖5

6. 在「輸入引用列的單元格」中輸入D3,單擊「確定」按鈕。

 

使用數據透視表

可以使用數據透視表來獲得上文示例中的結果,如下圖6所示。

圖6

 

創建數據透視表的步驟如下:

1. 在要創建數據透視表的數據集中任選一單元格,單擊「插入」選項卡「表格」組中的「數據透視表」命令。

2. 在「創建數據透視表」對話框的「選擇放置數據透視表的位置」中選取「現有工作表」,輸入:D1,單擊「確定」。

3. 將「城市」欄位拖至行區域,將「時間(h)」欄位拖至值區域。

4. 在數據透視表的任意值單元格中,單擊右鍵,選擇「值欄位設置」命令。在「值欄位設置」對話框的「值欄位匯總方式」列表框中,選擇「最小值」。

5. 在數據透視表中單擊右鍵,選擇「數據透視表選項」命令。在「數據透視表選項」對話框的「匯總和篩選」選項卡中,取消「顯示行總計」和「顯示列總計」複選框。

6. 將數據透視表頂部欄位修改為相應內容並調整布局。

 

可以看出,數據透視表對於帶有一個或多個判斷條件的聚合計算非常方便,但是與公式相比,當源數據變化時,它不能立即更新,需要刷新才能更新其內容。此外,數據透視表僅有11個函數可用,而公式有近400個可用函數。

 

兩個條件的求值示例

下面再看一個多條件的例子。如下圖7所示,在指定區域中分別計算每位銷售代表的最大銷售量。

圖7

 

想要編寫一個公式能夠直接向下複製,且當源數據更新時結果能自動更新。有了上文的基礎後,我們知道可以使用MAX函數配合兩個嵌套的IF函數來實現。正如上圖7中所示,在單元格F5中的數組公式為:

=MAX(IF($A$3:$A$12=$F$2,IF($B$3:$B$12=E5,$C$3:$C$12)))

其含義為,如果單元格區域A2:A12中的值等於單元格F2中的值,且單元格區域B3:B12中的值等於單元格E5中的值,則返回單元格區域C3:C12中相應的值,否則返回假。即生成數組:

{914;FALSE;FALSE;610;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE}

 

注意,嵌套的IF函數創建了一個AND條件判斷。此示例也可以使用上文介紹的DMAX函數或數據透視表來實現,有興趣的朋友可以試試。

 

再看一個示例。如下圖8所示,分別為:跑道(不同城市中的不同跑道)、BMX賽車手(賽車手名字)、時間(s)(沿跑道行駛的時間,以秒計)。現在,想要計算每個賽車手的最快時間。然而,因為PI跑道非常短而其他跑道非常長,需要從計算中排除PI跑道的時間。

圖8

 

我們在單元格F5中輸入數組公式:

=MIN(IF($A$3:$A$13<>$F$2,IF($B$3:$B$13=E5,$C$3:$C$13)))

其原理與前一個示例相同,只是條件判斷中使用了「<>」號,表示NOT運算。

 

我們看到,前面使用的數組公式必須以按Ctrl+Shift+回車鍵結束。自Excel 2010起,可以使用一個新函數:AGGREGATE函數,而無需按Ctrl+Shift+回車鍵。對於上例,使用AGGREGATE函數的解決方案如下圖9所示。(注意,如果在公式裡的IF函數中有數組操作,那麼該公式必須按Ctrl+Shift+回車鍵結束,即便作為AGGREGATE函數的數組參數也是如此。)

圖9

 

《Ctrl+Shift+Enter:MasteringExcel Array Formulas》學習筆記

完美Excel

歡迎在下面留言,完善本文內容,讓更多的人學到更完美的知識。

歡迎投稿:xhdsxfjy@163.com,與大家一起分享精彩知識。

歡迎關注[完美Excel]微信公眾號:

方法1—在微信通訊錄中搜索「完美Excel」或者「excelperfect」後點擊關注。

方法2—掃一掃下面的二維碼

相關焦點

  • 精通Excel數組公式012:布爾邏輯:AND和OR
    導言:本文為《精通Excel數組公式(學習筆記版)》中的一部分內容節選。 正如在上述例子中所看到的,諸如像SUMIFS函數、使用布爾運算或IF函數的數組公式、數據透視表、帶有篩選和匯總行的表、篩選、高級篩選、以及輔助列解決方法都可以使用AND條件運算。
  • EXCEL知識:數組運算是什麼?
    數組的計算方式數組分為一維數組和二維數組,另外,數組也可以進行加減乘除四種常見的運算。數組是一個比較常見而且好用的工具,在處理一些問題時,使用數組會更加方便快捷。所以我想用一種比較簡單的方法結合例子讓大家清晰地理解數組的計算方式以及數組的運算原理。
  • Excel公式與函數之美07:公式中的王者——數組公式
    為什麼要學習和使用數組公式使用數組公式,可以使Excel完成我們認為不可能的任務,或者說要使用VBA才能完成的任務,並且在有些情形下,數組公式可能是一個非常有效的解決方案。當然,好奇心也會驅使我們想要學習進階去創建更高級的公式,並且在學會數組公式的基本使用後想要創建更有效的數組公式。
  • 帶你一步步精通EXCEL數組:普通公式與數組公式的本質區別
    一:普通公式的概念:在使用Excel的時候,「公式」這個詞是非常熟悉的,用非常簡單的語言說就是:在Excel裡,凡是以半角符號「=」開始的、具有計算功能的單元格內容就是所謂的Excel公式。如:」=SUM(A2:D2)」;「=B2+C2」這些都是公式。
  • 什麼是數組公式?你真的了解嗎?一起來認識Excel數組公式
    上篇文章數組的基本知識,可回顧一下:可是,什麼是數組公式?你真的了解嗎?一起來認識Excel數組公式經過對數組公式有了一個簡單的了解之後,我們將通過一些簡單的例子來進一步認識數組公式。我們今天一起對數組公式來一個簡單的了解吧!
  • EXCEL中數組的應用之五:什麼是函數公式,什麼是數組公式
    2 EXCEL公式: 是EXCEL工作表中進行數值計算的等式。公式輸入是以「=」開始的。簡單的公式有加、減、乘、除等3 所謂數組,就是單元的集合或是一組處理的值集合。4 所謂數組公式,就是以數組為參數的公式,能通過這個單一的公式,執行多個輸入的操作並產生多個結果,每個結果顯示在一個單元中。數組公式是對一組或多組值執行多重計算,並返回一個或多個結果。
  • excel如何實現一對多查詢?學會數組公式,老闆為你點讚
    課程信息卡課程:《Excel天天訓練營》2.0圖文版章節:第2章-精通函數內容:數組基礎(small\large)在excel函數公式裡,大家最頭疼的莫過於數組公式。因為普通的函數相對好理解,就好像做一道題只有一個答案,比較好看懂。但數組公式就好像一道題有N個答案,比較複雜。但正因為複雜,它的功能也就更強大,可以根據條件獲得多條結果。為了更好的使用數組公式,我們需要先掌握數組裡常用的配套函數small和large。
  • EXCEL中數組的應用之七:利用數組公式的理由(二)
    在上一講的數組專題之六中,我詳細的講了利用數組公式的好處,或許有的朋友還沒有充分的理解,今日繼續給大家講解。當然我在寫這些文章時原則是分享成果,隨喜正能量,力爭在每篇文章可以作為一個獨立的單元,但不能完全的避免知識點的引用,還希望有志於學習的朋友,能多看看本平臺的其他文章。
  • 一起來認識Excel數組公式的計算方法
    如果你經常使用Excel的人,相信你對函數公式這個概念並不陌生。可是,什麼是數組公式?你真的了解嗎經過對數組公式有了一個簡單的了解之後,我們將通過一些簡單的例子來進一步認識數組公式。1、行列數相同數組的運算數組1+數組2+數組3,這是一個多單元格的數組公式,第一個數組的第一個元素與第二個數組的第一個元素相加,結果作為數組公式結果的第一個元素,然後第一個數組的第二個元素與第二個數組的第二個元素相加,結果作為數組公式結果的第二個元素,接著是第三個元素……直到第N個。
  • EXCEL中數組專題之八:數組及數組公式的制約性與集合性(一)
    一: 數組及數組公式引用大小制約性 我們先看上面的截圖,在C5中的錄入公式為「=IF(C2:C3="Mary",ROW(D2:D3))」(為數組公式),你知道它的返回值為什麼是FALSE?這裡就要理解一個概念,數組的大小的制約性。或許你不是很理解,下面我慢慢的講解。
  • 批處理數據神器:Excel數組公式全解析丨免費微課
    有時候,總覺得自己的Excel知識也算到位,常用函數也熟練,但是處理大批量數據的時候總是比別人慢一點,同一張表格的數據處理,別人的公式很奇怪:{=C2:K2*B3:B11}後來才發現,這是數組公式:數組公式對一組或多組值執行多重計算
  • 精通Excel數組公式15:使用INDEX函數和OFFSET函數創建動態單元格區域(續)
    導語:本文為《精通Excel數組公式14:使用INDEX函數和OFFSET函數創建動態單元格區域》的後半部分。圖6:部分數據缺失,需要公式來定義單元格區域A2:C6 可以使用數組公式:=$A$2:INDEX($C$2:$C$7,MAX((ROW($A$2:$C$7)-ROW($A$2)+1)*($A$2:$C$7<>""))) 也可以使用數組公式:=$A$2:INDEX($C$2:$C
  • 教你使用Excel數組公式
    Excel中數組公式非常有用,尤其在不能使用工作表函數直接得到結果時,數組公式顯得特別重要,它可建立產生多值或對一組值而不是單個值進行操作的公式。  輸入數組公式首先必須選擇用來存放結果的單元格區域(可以是一個單元格),在編輯欄輸入公式,然後按Ctrl+Shift+Enter組合鍵鎖定數組公式,Excel將在公式兩邊自動加上花括號「{}」。注意:不要自己鍵入花括號,否則,Excel認為輸入的是一個正文標籤。  選取數組公式所佔有的全部區域先選中區域中任意一個單元格,然後按下Ctrl+/鍵即可。
  • 數組運算規則:行列數相同的數組間是如何進行運算的
    大家好,今天我們繼續講解數組專題的第十二講,從這講開始我們講數組的運算問題,首先講的是行列數相同的數組間的運算方法。通過之前的講解,我了解了數組的定義,數組的性質,了解到:a)在數組的錄入時需要三鍵輸入,b)數組公式可以同時進行多個計算,可返回一個或多個結果。
  • Excel中的高科技:數組公式
    圖一 封面圖一、什麼是數組公式對學過編程的人士來說,變量和數組是一個很常見的概念,一般一個變量只能儲存一個值,而數組卻可以儲存一組值,並可以進行總體或個別操作。類似的,Excel中的數組公式是相對於普通公式而言的,普通公式的計算結果是單一值,數組公式計算結果卻可以是多個值,而且數組不必存儲在單元格中,也可以使用只儲存在Excel內存中的數組。
  • 精通Excel數組公式14:使用INDEX函數和OFFSET函數創建動態單元格區域
    可以使用INDEX函數或者OFFSET函數。許多人傾向於使用INDEX函數,因為OFFSET函數是一個易失性函數。 什麼是易失性函數?每當Excel重新計算電子表格時,無論其引用的單元格有無變化,易失性函數都會重新計算。許多操作都會觸發重新計算,例如在單元格中輸入數據、插入行等。這樣,易失性函數會增加公式的計算時間。
  • Excel數據分析系列(四):Excel中的公式、函數及數組
    如下圖展示的是一個3行5列的數組:用Excel中的數組表達式表示就是:{ $1,2,3; 4,5,6; 7,8,9; 10,11,12; 13,14,15 $ }Excel中的數組運算Excel中的數組運算和Python中numpy的數組對象類似
  • 應用技巧二十二:數組的兩種運算
    例1兩個一維數組的乘法運算以應用技巧二十一中的例1中的計算各飲品銷售額的數組公式為例,公式中對E3:E11和F3:F11兩個區域對應相乘,由於兩個區域都是9行1列的引用,在內部運算中,系統會自動將各行元素對應相乘,結果將變為9行1列的內存數組。
  • excel查找技巧:數組函數在區間查找中的應用解析
    由圖中不難看出G2:G6就是每個「條件」的最小極值,那麼最大極值呢,是不是錯位之後G3:G7區域呢?可是G7是空值,默認為0,所以我們加了一個絕對大的值代替了∞。這裡也教大家一個學習數組函數的小竅門,就是如何看到那些看不到的內存數據。以C2單元格為例,我們可以通過工具欄中公式——公式審核——公式求值來看到這些內容。
  • excel查找技巧:數組函數在區間查找中的應用解析
    由圖中不難看出G2:G6就是每個「條件」的最小極值,那麼最大極值呢,是不是錯位之後G3:G7區域呢?可是G7是空值,默認為0,所以我們加了一個絕對大的值代替了∞。這裡也教大家一個學習數組函數的小竅門,就是如何看到那些看不到的內存數據。以C2單元格為例,我們可以通過工具欄中公式——公式審核——公式求值來看到這些內容。