填写B列的VBA代码

我最近使用这个代码,我发现在另一个电子表格上帮助我解决这个问题:

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 

在我最初的使用中,这个代码通过selectA1来确定表格的尺寸,find正在使用的“A”的底部,在列“B”中select相邻的单元格,并填充以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 

我想先修改一下你的代码。 这应该从长远来看有所帮助,特别是在试图找出问题时。 将来,请尽量避免select/激活或激活引用。

 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 

注意你的代码中的评论。 看起来像一些“select”沟通不畅。 让我们试着解决你一些更多的定义代码:

 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 

这应该有助于更清楚地定义正在发生的事情。