【问题标题】:Excel Macro to compare data from 2 sheets and paste values over on matchExcel 宏用于比较 2 张工作表中的数据并在匹配时粘贴值
【发布时间】:2018-07-17 13:54:59
【问题描述】:

我有 2 张工作表,我想比较工作表 1 中名字和姓氏(A 列和 B 列)的数据是否在工作表 2(也是 A 列和 B 列)中找到,其中名字在列中A 和 B 列中的姓氏。如果在 sheet2 中找到 sheet1 的名字和姓氏,并且如果该行的工作表 2(E 列)中的 ID 号等于 2,那么我想复制客户从 sheet2 到 Sheet 1 的 P 列的详细信息行(D 列)。

我觉得下面的代码应该可以工作,但它并没有为我将客户数据粘贴到 sheet1 的 P 列中。任何想法为什么?

Sub matchandpaste()


Dim cell, cell2, revenue As Range
Dim wbk As Workbook
Dim sheet1, sheet2 As Worksheet
Dim temp, firstName, lastName As String

Set wbk = ThisWorkbook

Set Sheet1 = wbk.Sheets("Sheet1")
Set sheet2 = wbk.Sheets("Sheet2")


For Each cell In Sheet1.Range("B2:B" & Range("B2").End(xlDown).Row)
    lastName = cell.Value
    firstName = cell.Offset(0, -1).Value
    Set revenue = cell.Offset(0, 14)
    For Each cell2 In sheet2.Range("B2:B" & Range("B2").End(xlDown).Row)
        If lastName = cell2.Value And firstName = cell2.Offset(0, -1).Value And cell2.Offset(0, 3).Value = 2 Then
            revenue = cell2.Offset(0, 2).Value
        End If
    Next cell2
Next cell

【问题讨论】:

  • 否,因为我想将表 2 中的 E 列中的数据复制到表 1 中的 P 列,所以我将 revenue 设置为变量到我要粘贴数据的位置
  • @KPaul 没问题,我可以想象如果没有数据集就很难进行可视化。我确信这也可以按照您的建议使用自定义函数来完成,尽管我想深入了解这个宏的问题,因为它看起来应该可以工作,但它让我发疯。
  • 见下面@Jarom 的回复。

标签: vba excel


【解决方案1】:

您只需在revenue 范围变量的末尾添加一个.value。像这样:

Sub matchandpaste()


Dim cell, cell2, revenue As Range
Dim wbk As Workbook
Dim sheet1, sheet2 As Worksheet
Dim temp, firstName, lastName As String

Set wbk = ThisWorkbook

Set Sheet1 = wbk.Sheets("Sheet1")
Set sheet2 = wbk.Sheets("Sheet2")


For Each cell In Sheet1.Range("B2:B" & Range("B2").End(xlDown).Row)
    lastName = cell.Value
    firstName = cell.Offset(0, -1).Value
    Set revenue = cell.Offset(0, 14)
    For Each cell2 In sheet2.Range("B2:B" & Range("B2").End(xlDown).Row)
        If lastName = cell2.Value And firstName = cell2.Offset(0, -1).Value And cell2.Offset(0, 3).Value = 2 Then
            revenue.value = cell2.Offset(0, 2).Value
        End If
    Next cell2

Next cell

End Sub

【讨论】:

  • 伟大的收获,我不敢相信我查看了很多次代码并一直错过这个。
  • 是的,在我意识到问题之前,我花了一点时间弄乱代码。它并没有真正跳出你哈哈哈!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多