2013-06-24 203 views

回答

5

似乎是一個很好的使用了AVERAGEIFS ...

enter image description here

+1

稍短的版本:= AVERAGEIFS > 40999「,A:A,」<41030「)(自動擴展並且對區域設置不敏感)。 – pnuts

+1

我需要更頻繁地考慮區域效應。 +1解決地區問題。我通常不會。是的,我對B:B和A:A有所瞭解,但後來我必須將我的平均總數移至C列:* sheash * c列粗糙。 – xQbert

+2

40999可能不是區域設置敏感的,但它對日期系統敏感(即40999與1904年的日期系統不同)......它也不是很透明。我會使用DATE(2012,4,1)這樣明確的DATE函數,或者可能更好的是在像D2這樣的單元格中擁有第一個月,然後使用'= AVERAGEIFS(B:B,A:A,「> =」&D2,A :A,「<」&EOMONTH(D2,0)+1)' –

1

有很多方法可以做到這一點,但這裏有一個方法:

=SUMPRODUCT(B1:B4,--(MONTH(A1:A4)=4),--(YEAR(A1:A4)=2013))/SUMPRODUCT(--(MONTH(A1:A4)=4),--(YEAR(A1:A4)=2013)) 

當然,改變行號以匹配您的數據範圍

+0

是的,這是一種方式......但是,爲什麼 「 - 」?而當那年或者那個月沒有日期的時候,我得到一個除數0.我嘗試了幾種方法,並且總是得到一個問題或者其他的... –

+0

「 - 」是將一個布爾值True/False到1/0。 AVERAGEIFS避免了被零除的問題。 – pnuts

1

好吧,假設你要遵循的方法一個,我們以2010年爲基數(非閏年)。這個數組公式會給你11月19日的結果:

=AVERAGE(DATE(2010,MONTH(A1:A7),DAY(A1:A7))) 

當你將它輸入公式欄,你需要完成與CTRL + SHIFT入門+ Enter(不只是一般ENTER),以便Excel包圍帶圓括號的公式{}。 然後您需要將單元格格式化爲日期,例如。 dd mmm。

如果有空白單元的範圍,則上述公式將給出一個不正確的結果,因此將必須被適配爲如下(由更復雜的):

=AVERAGE(IF(ISNUMBER(A1:A7),DATE(2010,MONTH(A1:A7),DAY(A1:A7)))) 

這也是數組公式。

+0

我使用CTRL + SHIFT + ENTER方法獲取{}之前。它的工作..類似於你的第一個例子。但爲什麼有必要使用{}?它究竟做了什麼? –

+0

它被稱爲ARRAY FORMULAS。例如:[http://www.cpearson.com/excel/ArrayFormulas.aspx] – Michael

+0

這是不是平均日期 - 當然這個想法是如果它們落在特定的月份,例如平均值。 (B:B,A:A,「= AVERAGE(IF(MONTH(A1:A10)= 4,IF(YEAR(A1:A10)= 2012,B1:B10)))' –