對不起,如果這之前已被問過,但我無法在這裏或其他地方找到一個好的答案。excel的平均值與不同的範圍
我想平均不同長度的總和。示例數據集位於圖片中,每週有不同商店的銷售編號。如果沒有手動執行,我將如何計算第5-7周的平均值?在不同商店銷售的時間段在矩陣中的長度和位置都會改變。這可能與VBA /宏?
對於車間#1我想宏觀上給我兩個不同的平均值;一週用於2-3周銷售,另一週用於5-7周。
我目前正在使用的數據集是400x50,全部長度各不相同。提前致謝!
對不起,如果這之前已被問過,但我無法在這裏或其他地方找到一個好的答案。excel的平均值與不同的範圍
我想平均不同長度的總和。示例數據集位於圖片中,每週有不同商店的銷售編號。如果沒有手動執行,我將如何計算第5-7周的平均值?在不同商店銷售的時間段在矩陣中的長度和位置都會改變。這可能與VBA /宏?
對於車間#1我想宏觀上給我兩個不同的平均值;一週用於2-3周銷售,另一週用於5-7周。
我目前正在使用的數據集是400x50,全部長度各不相同。提前致謝!
編輯:好的,我錯過了平均值應該由組而不是整個時期完成的點。所以下面的答案並不真正相關。
你可以SUMIF
所有非空白單元格,然後由所有非空白單元格的COUNTIF
劃分:
=SUMIF(B2:H2;"<>"&"")/COUNTIF(B2:H2;"<>"&"")
謝謝你的回答,但這隻會返回兩種不同類型銷售的平均值。 我想知道的是2-3周的平均值和5-7的平均值。手動這當然是5,5和4,但我想自動填充,而不必手動選擇周。 這是因爲在第5-7周可能有銷售,這使得它與第2-3周不同。 – Maskar
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 | 4
和3 | 5 | 4.5
。 我不會評論它;即使總體思路是好的,OP缺乏規範和代碼也不能保證提供幫助。他可以通過付出努力來理解它。
如果任何人(包括但不限於OP)感覺像評論它,繼續前進,我很歡迎這樣的變化。
你的意思是商店1的2-3和5-7? –
是的,對不起。 2-3周和5-7商店#1 – Maskar
類似商店2的1-2,4和6-7? –