[英]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),,))
SUMPRODUCT
和INDEX
喜歡在解析文本時對任何類似於錯誤的東西進行阻塞,因此使單元格范圍引用始終與實際數據相同,並避免出現空白。
您的結果應如下所示。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.