Vba 确定合并单元格的列范围
我的目标是平均一行中的许多列 该表按月列出,每列一周,每列有若干行的数字 该表从顶部分为几个月,根据月份跨度的多少,月份名称标题位于四列或五列的合并单元格中(在每个月的四周或五周之前的月份开始和结束时省略周六和周日)Vba 确定合并单元格的列范围,vba,excel,range,excel-2010,Vba,Excel,Range,Excel 2010,我的目标是平均一行中的许多列 该表按月列出,每列一周,每列有若干行的数字 该表从顶部分为几个月,根据月份跨度的多少,月份名称标题位于四列或五列的合并单元格中(在每个月的四周或五周之前的月份开始和结束时省略周六和周日) 例如,今年(2015年)11月包括五个工作周。报头的范围是O11:S11-合并的单元 在这张横跨全年的表格上方,有一个单元格,用于计算项目时间与管理费用的平均小时数 在我11月份的例子中,我的平均值是O43:S43。我想在一个单元格中键入或选择要求平均值的月份,然后从按住十一月的
例如,今年(2015年)11月包括五个工作周。报头的范围是O11:S11-合并的单元 在这张横跨全年的表格上方,有一个单元格,用于计算项目时间与管理费用的平均小时数 在我11月份的例子中,我的平均值是O43:S43。我想在一个单元格中键入或选择要求平均值的月份,然后从按住
十一月的合并单元格中查找该月份的列范围
例如,如果关键单元格是D9,以11月为单位,我想将平均值放在E9中,一年中的月数从K11到W11,那么解决这个问题的可能方法是什么
我试着使用索引匹配公式,但那毫无用处。我想我需要编写一个VBA函数。你可以找到合并的单元格,然后调整范围。删除rng。选择行,它只是用来检查它是否正确计算
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
您可以找到合并的单元格,然后调整范围。删除rng。选择行,它只是用来检查计算是否正确
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
我不确定我是否真正理解这个问题,但每当我想使用公式时,我都会避免使用合并的单元格。您可以做的是在周和合并月份单元格之间插入一行,并将月份放在每周上方(即,您将有5个单元格,月份“11月”位于工作周上方)。然后你可以使用SUMIF,AVERAGEIF,etcAs Jaycal说-我避免合并单元格。跨选择单元格居中更容易使用。您可以检查单元格是否属于合并范围的一部分,例如,Debug.Print Sheet1.range(“A1”)。合并单元格
-将返回TRUE/FALSE,并使用Debug.Print Sheet1.range(“A1”)查找合并单元格的范围.MergeArea.Address
同意这些意见-任何可用的解决方案都比重新构造工作簿以避免合并单元格要复杂。我不确定我是否真正理解这个问题,但每当我想使用公式时,我都会避免使用合并单元格。您可以做的是在周和合并月份单元格之间插入一行,并将月份放在每周上方(即,您将有5个单元格,月份“11月”位于工作周上方)。然后你可以使用SUMIF,AVERAGEIF,etcAs Jaycal说-我避免合并单元格。跨选择单元格居中更容易使用。您可以检查单元格是否属于合并范围的一部分,例如,Debug.Print Sheet1.range(“A1”)。合并单元格
-将返回TRUE/FALSE,并使用Debug.Print Sheet1.range(“A1”)查找合并单元格的范围.MergeArea.Address
同意这些意见-任何可用的解决方案都比重新构造工作簿以避免合并单元格更复杂。