2016-08-01 37 views
-2

對不起,如果這之前已被問過,但我無法在這裏或其他地方找到一個好的答案。excel的平均值與不同的範圍

我想平均不同長度的總和。示例數據集位於圖片中,每週有不同商店的銷售編號。如果沒有手動執行,我將如何計算第5-7周的平均值?在不同商店銷售的時間段在矩陣中的長度和位置都會改變。這可能與VBA /宏?

IMAGE HERE!

對於車間#1我想宏觀上給我兩個不同的平均值;一週用於2-3周銷售,另一週用於5-7周。

我目前正在使用的數據集是400x50,全部長度各不相同。提前致謝!

+0

你的意思是商店1的2-3和5-7? –

+0

是的,對不起。 2-3周和5-7商店#1 – Maskar

+0

類似商店2的1-2,4和6-7? –

回答

0

編輯:好的,我錯過了平均值應該由組而不是整個時期完成的點。所以下面的答案並不真正相關。

你可以SUMIF所有非空白單元格,然後由所有非空白單元格的COUNTIF劃分:

=SUMIF(B2:H2;"<>"&"")/COUNTIF(B2:H2;"<>"&"") 
+0

謝謝你的回答,但這隻會返回兩種不同類型銷售的平均值。 我想知道的是2-3周的平均值和5-7的平均值。手動這當然是5,5和4,但我想自動填充,而不必手動選擇周。 這是因爲在第5-7周可能有銷售,這使得它與第2-3周不同。 – Maskar

0
Public Function MULTIAVERAGE(rng As Range) As String 
Dim r As Long, c As Long 
Dim rngelement As Range, avgarray(), i As Long 

Set rng = Intersect(rng, rng.Worksheet.UsedRange) 
For r = 1 To rng.Rows.Count 
    For c = 1 To rng.Columns.Count 
     If Not IsEmpty(rng(r, c)) Then 
       If rngelement Is Nothing Then 
        Set rngelement = rng(r, c) 
       Else 
        Set rngelement = Union(rng(r, c), rngelement) 
       End If 
      Else 
       If Not rngelement Is Nothing Then 
        ReDim Preserve avgarray(i) 
        avgarray(i) = Application.WorksheetFunction.Average(rngelement) 
        Set rngelement = Nothing 
        i = i + 1 
       End If 
     End If 
    Next c 
Next r 

If Not rngelement Is Nothing Then 
    ReDim Preserve avgarray(i) 
    avgarray(i) = Application.WorksheetFunction.Average(rngelement) 
' Set rngelement = Nothing 
' i = i + 1 
End If 

'Dim avgarraystr() As String 
' ReDim avgarray(i) 
'For j = 0 To i 
' avgarraystr(j) = CStr(avgarray(j)) 
'Next j 
MULTIAVERAGE = Join(avgarray, " | ") 
End Function 

分別給出結果5.5 | 43 | 5 | 4.5我不會評論它;即使總體思路是好的,OP缺乏規範和代碼也不能保證提供幫助。他可以通過付出努力來理解它。

如果任何人(包括但不限於OP)感覺像評論它,繼續前進,我很歡迎這樣的變化。

相關問題