对不起,如果这之前已被问过,但我无法在这里或其他地方找到一个好的答案。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? –