填写B栏的VBA代码

时间:2017-03-07 20:30:23

标签: excel vba excel-vba autofill

我最近使用此代码在另一个电子表格中帮助我解决了这个问题:

BYTE a[] = { 0x01, 0x02, 0x03, 0x04 };
BYTE b[] = { 0x02, 0x03 };
if (mem_in_mem(a, b, 4 * sizeof(BYTE)) == 0) {
    printf("b is in memory range of a\n");
}

在我最初使用时,此代码通过选择A1确定表格的尺寸,找到" A"正在使用中,选择列中的相邻单元格" B"并且在代码已经开始的A2附近填充以B2结尾的单元格。当重新使用此代码执行相同的任务时,它将从" B1"这是一个问题,因为它会将我的标题一直填充到工作表底部而不是公式。

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

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

1 个答案:

答案 0 :(得分: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

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