我有一个宏,它基本上在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的初学者,所以任何帮助都将非常感激。
答案 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