确定合并单元格的列范围

我的目标是平均在一行中的许多列。

该表按月排列,每列一周,每列有数字的行数。

该表格被分成几个月份,月份名称标题在一个合并单元格中的四列或五列,具体取决于月份的周数(在每月的开始和结束时忽略星期六和星期日)或每月五个星期)。


例如,今年11月(2015年)包括五个工作周。 标题的范围是O11:S11 – 一个合并的单元格。

在这张跨越一年的表格上方,有一个单元格用于计算项目时间花费的时间与平均开销的平均值。

以我十一月的例子来说,我会平均O43:S43。 我想在一个单元格中键入或select要平均的月份,然后从November月份的合并单元格中查找该月的列范围。

例如,如果关键单元格是D9,那么在11月份,我想把平均值放在E9中,而从K11到W11这一年的月份排列,那么解决这个问题的可能方法是什么呢?

我尝试使用一个INDEX MATCH公式,但是这让我无处可去。 我需要写一个VBA函数(我认为)。

你可以find合并的单元格,然后调整范围。删除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