簡體   English   中英

根據Excel中的多個條件計算平均值

[英]Calculate Average based on multiple condition in Excel

我回來了我的新的Excel問題。 可以說我有這樣的桌子。

    |  A                           |  B  
------------------------------------------
 1  |  ENV                         |  Value
------------------------------------------
 2  |  ABC - 10/1/2014 1:38:32 PM  |  4
 3  |  XYZ - 10/1/2014 1:38:32 PM  |  6 
 4  |  ABC -  9/1/2014 1:38:32 PM  |  1 
 5  |  XYZ - 10/1/2014 1:38:32 PM  |  10 
 6  |  ABC - 10/1/2014 1:38:32 PM  |  7
 7  |  XYZ -  9/1/2014 1:38:32 PM  |  1 
 8  |  ABC -  9/1/2014 1:38:32 PM  |  10 
 9  |  ABC - 10/1/2014 1:38:32 PM  |  7 
10  |  XYZ - 10/1/2014 1:38:32 PM  |  7 

現在,在單元格C2中,我選擇了ABC。

因此,在細胞D2,我希望所有的“ABC”(COL A)其中所有的“ABC”的月= 10(COL A)和在細胞E2,MAX( 從列B),其中的平均( 從列B)月= 10( col A )。

因此,我在單元格D2和E2中的結果分別為6和7。

我希望我的問題和榜樣有意義。

更新:
謝謝大家的幫助。
現在讓我們說我不確定該電子表格上將有多少行,所以我想出了這個公式,但是它不起作用,給了我#DIV / 0! 錯誤。
*注意:我正在使用公式從單元格C2中獲取“ ABC”和“ 10”。

=AVERAGEIFS(
(OFFSET($A$1,1,1,COUNTA($B:$B)-1,1)),
OFFSET($A$1,1,0,COUNTA($A:$A)-1,1), (MID(C2,1,(FIND("-",C2))-2)),
OFFSET($A$1,1,0,COUNTA($A:$A)-1,1), (MID(C2,(FIND("-",C2)+1),(FIND("/",C2))-(FIND("-",C2)+1))))  

甚至嘗試過此方法,但存在相同錯誤:

=SUMPRODUCT(((MID(A2:A10,1,(FIND("-",A2:A10))-1))=(MID(C2,(FIND("-",C2)+1),(FIND("/",C2))-(FIND("-",C2)+1))))*
(MONTH(DATEVALUE(MID(A2:A10,7,99)))=(MID(C2,(FIND("-",C2)+1),(FIND("/",C2))-(FIND("-",C2)+1))))*
(B2:B10))/SUMPRODUCT(((MID(A2:A10,1,(FIND("-",A2:A10))-1))=(MID(C2,(FIND("-",C2)+1),(FIND("/",C2))-(FIND("-",C2)+1))))*
(MONTH(DATEVALUE(MID(A2:A10,7,99)))=(MID(C2,(FIND("-",C2)+1),(FIND("/",C2))-(FIND("-",C2)+1)))))  

你能幫我這個嗎?

具有中間價值的解決方案

為了解決該問題(我僅測試了平均值 ),我首先使用了2個中間值:此解決方案不是最佳解決方案,將有許多更智能的方法來解決該問題(例如數據透視表)。

ENV                                Value        Intermediary 1  Intermediary 2  

ABC - 10/1/2014 1:38:32 PM          4           ABC             10  
XYZ - 10/1/2014 1:38:32 PM          6           XYZ             10  
ABC -  9/1/2014 1:38:32 PM          1           ABC             9   
XYZ - 10/1/2014 1:38:32 PM          10          XYZ             10  

第一中間列包含ENV列的前三個字符( =LEFT(A9,3) ),而第二中間列包含月份( =MID(A9,7,2) )。 僅當您的ENV記錄是固定大小且同質的(例如,您的環境名稱恰好有3個字符)時,此方法才有效。

使用此布局,您可以計算以下公式在任何單元格中的平均放置:

=AVERAGEIFS(D9:D12, F9:F12,"=ABC", G9:G12, "=10")

其中D9:D12是值間隔, F9:F12是第一中間列, G9:G12是第二中間列。

一站式緊湊型解決方案(陣列)

可以找到依賴於arrays的優化解決方案。 例如,要基於2個“矢量”條件計算間隔的平均值和最大值,可以編寫此襯紙:

= MAX(IF((LEFT(A9:A12,3)="ABC")*(MID(A9:A12,7,2)="10"),D9:D12))

= AVERAGE(IF((LEFT(A9:A12,3)="ABC")*(MID(A9:A12,7,2)="10"),D9:D12))

使用A9:A12您的原始記錄,而D9:D12是值間隔。

該解決方案的優點是您不需要任何中間列,並且可以將此方法擴展到所有其他沒有' xxxxxIFS '的公式(對於MAX就是這種情況)。

注意 :您必須使用CTRL + SHIFT + RETURN確認此公式,否則您的公式將因#VALUE錯誤而失敗。

現場演示

在此處輸入圖片說明

現場演示可在此處獲得

您可以使用-數據>帶有分隔符“-的列到文本”,將A列插入日期和字母開始。 在有了新的兩列(假設F和G)之后,可以使用函數“ AVERAGEIF”,條件是檢查“ F”中單元格的值是ABC且Moth(“ G”中單元格)= 10.至於最大值,您可以對列E的MAX(IF ....)進行相同操作。

SUMPRODUCT將允許您分析組合字符串中最左邊和日期的字符。 可以使用MAX()INDEX()類似地構造偽MAXIF INDEX()

在D2中使用=SUMPRODUCT((LEFT(A2:A10,3)="ABC")*(MONTH(DATEVALUE(MID(A2:A10,7,99)))=10)*(B2:B10))/SUMPRODUCT((LEFT(A2:A10,3)="ABC")*(MONTH(DATEVALUE(MID(A2:A10,7,99)))=10))

在E2中使用=MAX(INDEX((LEFT(A2:A10,3)="ABC")*(MONTH(DATEVALUE(MID(A2:A10,7,99)))=10)*(B2:B10),,))

SUMPRODUCTINDEX喜歡在解析文本時對任何類似於錯誤的東西進行阻塞,因此使單元格范圍引用始終與實際數據相同,並避免出現空白。

您的結果應如下所示。

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM