Excel VBA索引匹配动态范围
问题描述:
更新:斜体字的所有措辞已被更改,因为我不觉得我的问题已得到解答。Excel VBA索引匹配动态范围
不幸的是,所有其他类似命名的问题比我认为的要详细得多。正如我所有的谷歌搜索已经取得零水果,我回来问你优秀WIZARDS。
基本上我想索引匹配一个动态范围。输入数据根据查询的是哪一周的数据而变化,但好处是工作表始终与相同,但是列长度是变量。通常我会在这里使用LastRow函数,但这不可能,因为它使用公式的参考单元格。这对你们中的一些人来说可能会非常简单。见下文:
ActiveCell.FormulaR1C1 = _
"=INDEX('Consolidation Sheet'!R8C2:R6477C2,MATCH('Workbook 1'!RC[-1],'Consolidation Sheet'!R8C6:R6477C6,0))"
LastRow = Cells(Rows.Count, "E").End(xlUp).Row
Range("F4").AutoFill Destination:=Range("F4:F" & LastRow), Type:=xlFillDefault 'fill F column
作为参考的“固结片材”列是B列或“2”,在参考代码。我要求索引匹配要做的是找到员工根据他们的员工编号进行切换,但每天输入的信息是可变的,因为它是超时数据,所以我需要列长度是动态的。任何援助都会有所帮助。
答
不确定您需要使用索引/匹配进行计算,但以下显示了进行动态索引/匹配查找的阶段。这假设数据按员工排序
ColumnA - EmployeeName
ColumnB - EmployeeHours
ColumnC - StartRowOfEmployee =MATCH(A3,A:A,0)
ColumnD - EndRowOfEmployee =C3+COUNTIF(A:A,A3)-1
ColumnE - SumOfEmployeeHours =SUM(INDEX(B:B,C3,0):INDEX(B:B,D3,0))
这将是快速和不稳定的。实质上,动态元素是通过将INDEX链接到SUM(Rng1:Rng2)中构建的,其中Rng1和Rng2是数据的动态开始和结束行。
看起来不难。使用全列参考;对INDEX或MATCH使用它们没有任何损害。尽管你可能想摆脱ActiveCell和RC [-1]废话。 – Jeeped