我的目标是在一行中平均一些列。
该表按月列出,每列一周,每行列有数字的行数。
该表在顶部分为几个月,其中月份名称标题位于四个或五个列的合并单元格中,具体取决于月份跨越的周数(星期六和星期日在月末开始和月末省略)到每月四到五周)。
例如,今年11月(2015年)包括五个工作周。标题的范围是O11:S11 - 合并的单元格。
在这个跨越年份的表格上方,有一个单元格可以平均项目时间与开销相关的小时数。
在我11月的例子中,我将平均O43:S43。我想在一个单元格中键入或选择要平均的月份,然后从包含November
的合并单元格中找到该月的列范围。
例如,如果关键单元格为D9,持有11月,并且我想将平均值放在E9中,并且该年份的行数跨越K11 - W11,那么解决此问题的可能方法是什么? ?
我尝试使用INDEX MATCH公式,但这让我无处可去。我需要写一个VBA函数(我想)。
答案 0 :(得分:0)
您可以找到合并的单元格然后调整范围。移除rng.Select
行,它就是检查它是否正确计算。
Sub Button1_Click()
Dim Fm As Range, Av As Range, rng As Range
Dim s As String, x
s = Range("D9").Value
Set Fm = Rows(11).Find(s, LookIn:=xlValues)
If Not Fm Is Nothing Then
Set Av = Fm.MergeArea
Set rng = Av.Offset(32).Resize(, Av.Columns.Count)
rng.Select 'remove later
x = Application.WorksheetFunction.Average(rng)
Range("E9").Value = x
End If
End Sub