使用Vlookup的循环和求和函数

时间:2015-09-24 18:37:43

标签: excel vba excel-vba loops vlookup

我有一个宏,它基本上在Sheet1中搜索C列中的值“Rec”并复制D列中的相应值,然后将其粘贴到Sheet2的B列中的最后一个打开的单元格中。它完成它应该做的事情,如下所示:

Sub FindPasteGSVInNextCell()

Worksheets("Sheet2").Activate

Range("B" & Rows.Count).End(xlUp).Offset(1, 0).Value = _
WorksheetFunction.VLookup("Rec", Sheet1.Range("C2:H25"), 2, False)

End Sub

我现在想要代码,而不是仅搜索单个“Rec”值,在C列中搜索所有带“Rec”的行,并在D列中总结所有相应的值,然后放置该总和到Sheet2。

我假设我需要某种Do Until循环或其他东西,但我不确定如何格式化它...我是VBA的初学者,所以任何帮助都将非常感激。

1 个答案:

答案 0 :(得分:0)

vlookup将无法正常工作,因为它将继续只抓取" Rec"的第一个实例。

在工作表2上列出A列中的所有可能类别,然后列在B1列中

 = sumif(Sheet1!C:C,A1,Sheet1!D:D)

然后复制下来。这将按类别为您提供总数。

如果你想使用VBA,你仍然需要在某处设置类别列表,无论是硬编码还是列在你可以循环的地方。

如果您的列表位于Sheet2的A列中,那么您将:

dim ws as worksheet
set ws = Worksheets("Sheet2")
For each i in ws.range(ws.Range("A1"),ws.Range("A1").offset(xldown)).Cells
    i.offset(,1) = WorksheetFunction.Sumif(Worksheets("Sheets1").Range("C:C"), _
        i,Worksheets("Sheets1").Range("D:D"))
next i