【发布时间】:2016-01-02 11:51:29
【问题描述】:
我经常从 2 个不同的来源生成报告,这两个来源都有一个唯一标识符,用于链接两个报告中的数据(我将字段 ID 称为“LINK ID”)。此字段出现在两组导出中(但是导出来自填充不同数据点的 2 个不同系统)。我通常将每个报告剪切并粘贴到新创建的工作簿中的单独工作表中,然后将它们匹配起来。
有一次,我编写了一个子例程,该例程将循环浏览一张工作表中包含“LINK ID”的列,然后循环浏览另一张工作表中包含相同“LINK ID”的另一列,并且如果找到匹配项,它将复制链接到该匹配项的整行数据并将其粘贴到第一个工作表上。
我编写的代码从未完全完成,但我正在尝试看看我是否可以一劳永逸地解决这个问题,因为如果我不必用我的眼睛筛选这些代码,那就太棒了一次。
这是我所拥有的:
Private Sub Find_And_Link()
Dim rw As Long
Dim mr2 As Long
Dim ws3 As Worksheet
Set ws3 = Sheets("VM")
With Sheets("AY")
For rw = 2 To .Cells(Rows.Count, "F").End(xlUp).Row
If CBool(Application.CountIf(ws3.Columns(1), .Cells(rw, "F").Value)) Then
mrw = Application.Match(.Cells(rw, "F"), ws3.Columns(1), 0)
ws3.Cells(mrw, "A").Resize(1, 12).Copy _
Destination:=.Cells(rw, "G")
ws3.Rows(mrw).EntireRow.Delete
'getting rid of the row if match found
End If
Next rw
End With
Set ws3 = Nothing
End Sub
【问题讨论】:
-
快速说明:使用
With时,请确保所有范围类型引用都是明确的。我注意到您可能想要更新您的For rw = 2 ...行,因为目前尚不清楚要使用哪个工作表的 Rows.Count...所以将其更改为For rw = 2 to .Cells(.Rows.Count,"F").End(xlUp).Row以确保它正在计算“AY”工作表的行。使用您当前的代码,它有什么问题?它没有完全循环,还是出现错误? -
谢谢。所以......为了清楚起见,我应该在
For rw = 2...行中的某处包含 .Sheets 引用吗?目前,当我运行代码时,它绝对什么都不做。它没有给我任何错误,但似乎也没有改变任何东西。
标签: vba excel columnsorting