2017-03-07 89 views
1

我最近使用這個代碼,我發現幫助我與其他電子表格此問題:VBA代碼向下填充列B

Range("B2").Select 
ActiveCell.FormulaR1C1 = _ 
    "=VLOOKUP(RC[-1],'Unapplied Report'!R[-1]:R[15],2,FALSE)" 

Range("A2").Select 
Selection.End(xlDown).Select 
ActiveCell.Offset(0, 1).Select 
Range(Selection, Selection.End(xlUp)).Select 
Selection.FillDown 

在我最初使用此代碼通過選擇A1確定表的尺寸,找到正在使用的「A」的底部,選擇列「B」中的相鄰單元格並填充以代碼開始的A2鄰近於A2結尾的單元格。當重複使用此代碼執行相同的任務時,它將從「B1」中填充,這是一個問題,因爲它隨後將我的標頭一直填充到工作表底部而不是公式。

我之前使用的代碼沒有任何問題。我粘貼下面,以防其他人可能會注意到我做了什麼不同或錯誤。謝謝你的幫助!

Range("B2").Select 
ActiveCell.FormulaR1C1 = _ 
    "=IF(ISNUMBER(MATCH(RC[-1],Conveyance,0)),""Conveyance"",IF(ISNUMBER (MATCH(RC[-1],NonConveyance,0)),""Non-Conveyance"",IF(ISNUMBER(MATCH(RC[-1],VA,0)),""VA Claim"",IF(ISNUMBER(MATCH(RC[-1],USDA,0)),""USDA Claim"",IF(ISNUMBER(MATCH(RC[-1],PMI,0)),""PMI Claim"",IF(ISNUMBER(MATCH(RC[-1],SFLS,0)),""SFLS Claim"",""Not Found""))))))" 

Range("A2").Select 
Selection.End(xlDown).Select 
ActiveCell.Offset(0, 1).Select 
Range(Selection, Selection.End(xlUp)).Select 
Selection.FillDown 

回答

0

我想先對您的代碼進行一些修復。從長遠來看,這應該有所幫助,特別是在試圖發現問題時。將來,請儘量避免選擇/激活或激活引用。

Range("B2").FormulaR1C1 = _ 
"=IF(ISNUMBER(MATCH(RC[-1],Conveyance,0)),""Conveyance"",IF(ISNUMBER (MATCH(RC[-1],NonConveyance,0)),""Non-Conveyance"",IF(ISNUMBER(MATCH(RC[-1],VA,0)),""VA Claim"",IF(ISNUMBER(MATCH(RC[-1],USDA,0)),""USDA Claim"",IF(ISNUMBER(MATCH(RC[-1],PMI,0)),""PMI Claim"",IF(ISNUMBER(MATCH(RC[-1],SFLS,0)),""SFLS Claim"",""Not Found""))))))" 

Range("A2").End(xlDown).Offset(0, 1).Select 'Looks like a jumble here trying to offset 
Range(Selection, Selection.End(xlUp)).FillDown 

請注意我在您的代碼中的評論。看起來像一些「選擇」溝通不暢。讓我們嘗試用一些更加明確的代碼修復你:

Dim LR as Long 'LR = Last row 
LR = Cells(Rows.Count, "A").End(xlUp).Row 'Finds last row in column A 

Range("B2").FormulaR1C1 = _ 'Your previous formula 
"=IF(ISNUMBER(MATCH(RC[-1],Conveyance,0)),""Conveyance"",IF(ISNUMBER (MATCH(RC[-1],NonConveyance,0)),""Non-Conveyance"",IF(ISNUMBER(MATCH(RC[-1],VA,0)),""VA Claim"",IF(ISNUMBER(MATCH(RC[-1],USDA,0)),""USDA Claim"",IF(ISNUMBER(MATCH(RC[-1],PMI,0)),""PMI Claim"",IF(ISNUMBER(MATCH(RC[-1],SFLS,0)),""SFLS Claim"",""Not Found""))))))" 
Range("B2:B"&LR).Filldown 

這應該有助於更清楚地定義發生了什麼。