Excel VBA循环列和复制数据

我需要一些帮助,我想写一些代码。 我在VBA方面并不是很有经验,我以为一个VLookup就是我所需要的,但是在思考之后。 我认为一个工作更好的查找循环。

在sheet1上会有一个button。

代码将需要做以下工作,在表“全局”中使用列B和search范围,每一行将有不同的值,它将需要逐行search单元格值,如果匹配find复制H,F&E列中的数据并粘贴到Global表中的O,P和Q列中。 H = O,E = P,D = Q。循环直到第一个空行。

在“详细信息”表的B列中,如果没有与“详细信息”匹配的数据,则该行将被删除。

例如:

全球之前: 在这里输入图像说明

细节之前: 在这里输入图像说明

代码运行后:

全球之后: 在这里输入图像说明

详细后: 在这里输入图像说明

希望这可以很好的解释,你可以看到它find了匹配的数据并将其复制到相关的行中,所有不匹配的数据都被删除了。

我目前没有代码,因为如果我诚实,我不知道从哪里开始! 所有的帮助非常感谢!

尝试这个。 请注意,如果已经find行中的值,则需要有一个空列来暂时保留一个标记 – 在我的示例中,我使用了“I”列,如果不是空的,则需要修改。

Private Sub pasteValues() Dim i, j, lastG, lastD As Long ' find last row lastG = Sheets("Global").Cells(Rows.Count, "B").End(xlUp).Row lastD = Sheets("Details").Cells(Rows.Count, "B").End(xlUp).Row ' loop over values in "Global" For i = 1 To lastG lookupVal = Sheets("Global").Cells(i, "B") ' value to find ' loop over values in "details" For j = 1 To lastD currVal = Sheets("Details").Cells(j, "B") If lookupVal = currVal Then Sheets("Global").Cells(i, "O") = Sheets("Details").Cells(j, "H") Sheets("Global").Cells(i, "P") = Sheets("Details").Cells(j, "E") Sheets("Global").Cells(i, "Q") = Sheets("Details").Cells(j, "D") ' mark the row Sheets("Details").Cells(j, "I") = "marked" End If Next j Next i ' loop over rows in "details" and delete rows which have not been marked For j = 1 To lastD If Sheets("Details").Cells(j, "I") <> "marked" Then ' delete unmarked rows Sheets("Details").Cells(j, "A").EntireRow.Delete If Sheets("Details").Cells(j, "B") <> "" Then j = j - 1 ' revert iterator so it doesn't skip rows End If Else: ' remove the mark Sheets("Details").Cells(j, "I") = "" End If Next j End Sub