2017-04-04 203 views
2

更新:斜体字的所有措辞已被更改,因为我不觉得我的问题已得到解答。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”,在参考代码。我要求索引匹配要做的是找到员工根据他们的员工编号进行切换,但每天输入的信息是可变的,因为它是超时数据,所以我需要列长度是动态的。任何援助都会有所帮助。

+0

看起来不难。使用全列参考;对INDEX或MATCH使用它们没有任何损害。尽管你可能想摆脱ActiveCell和RC [-1]废话。 – Jeeped

回答

0

不确定您需要使用索引/匹配进行计算,但以下显示了进行动态索引/匹配查找的阶段。这假设数据按员工排序

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是数据的动态开始和结束行。

enter image description here