VBA 填充 B 列的代码

VBA Code for Fill Down Column B

我最近使用我发现的这个代码来帮助我在另一个传播中解决这个问题sheet:

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 确定 table 的尺寸,找到正在使用的 "A" 的底部,选择 "B" 列中的相邻单元格并填充以 B2 结尾的单元格,该单元格与代码开始的 A2 相邻。当重复使用这段代码来执行它从 "B1" 填充的相同任务时,这是一个问题,因为它然后用我的 header 一直填充到 sheet 的底部而不是公式.

我之前使用的代码没有任何问题。我已将其粘贴在下面,以防其他人注意到我的不同之处或错误之处。感谢您的帮助!

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

我想先对您的代码进行一些修复。这应该有助于长期 运行,尤其是在尝试查找问题时。以后尽量避免selection/activate或active references.

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

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