【问题标题】:Excel VBA Loop column and copy dataExcel VBA循环列和复制数据
【发布时间】:2015-06-03 23:21:39
【问题描述】:

我需要一些我正在尝试编写的代码的帮助。我在 VBA 方面不是很有经验,我认为 VLookup 是我需要的,但在考虑之后。我认为 Find 循环的效果更好。

sheet1 上会有一个按钮点击。

代码将需要执行以下操作,在工作表“全局”中使用 B 列和搜索范围,每行会有不同的值,需要逐行搜索单元格值,如果在工作表“详细信息”中找到匹配项,然后从 H、F 和 E 列复制数据并粘贴到全局表中的 O、P 和 Q 列。 H = O,E = P,D = Q。循环直到第一个空行。

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

例如:

全局之前:

之前的详细信息:

代码运行后:

全球之后:

之后的详细信息:

希望这可以很好地解释它,正如您所看到的,它已经找到匹配的数据并将其复制到相关行,所有不匹配的数据都已被删除。

我目前没有代码,因为老实说我不知道​​从哪里开始!!!非常感谢所有帮助!

【问题讨论】:

  • 通过阅读它,我会认为 Vlookup 应该可以满足您的需求。是什么让你不这么认为?

标签: vba excel excel-2010


【解决方案1】:

试试这个。请注意,如果已找到该行中的值,您将需要一个空列,该列将暂时保留一个标记 - 在我的示例中,我使用了“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

【讨论】:

    猜你喜欢
    • 2015-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-05
    相关资源
    最近更新 更多