2017-04-04 204 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