VBA匹配并复制表单之间的单元格值

我有两张纸,一张标记为“作业”,另一张标记为“备份”。 我试图实现的是将“分配”信息复制到“备份”以允许input新数据。

但是,一旦复制到“备份”,新信息提供给“分配”,我正在循环“备份”列A中的每个项目,并将相邻单元格(B列)复制到相应的单元格值“分配”。

到目前为止,这是我有的代码,但没有返回任何可行的结果:

Option Explicit Sub Match() Dim RNG As Range Dim RI As Range Dim WS As Worksheet Dim f As Range Set WS = ActiveWorkbook.Sheets("Assignments") Set RNG = Sheets("Assignments Backup").Range("A2:A400") For Each RI In RNG With WS 'RI.Select Set f = .Columns(1).SpecialCells(xlCellTypeConstants).Find(What:=Cells(Target.Row, 1), LookIn:=xlFormulas, LookAt:=xlWhole) '<--| try finding "Emp #" from Assignments sheet changed cell row column B in referenced sheet ("ie "Checklist") column "A" cells not blank cells If f Is Nothing Then '<--| if "Emp #" match not found 'MsgBox "I couldn't find " & Cells(Target.Row, 1).Value & " in worksheet 'Checklist'" Else ' <-- if "Emp #" match found .Range("F:F").Rows(f.Row).Value = Range("F:F").Rows(Target.Row).Value '<--| paste "Assigmnents" sheet changed cell row columns "AA:AF" content in corresponiding columns of referenced sheet ("ie "Checklist") row where "Emp #" match was found End If End With Next End Sub 

我对延迟道歉,我已经上传了一个示例文件到我的谷歌驱动器。 [ https://drive.google.com/open?id=0B0jgh8FwPVvkWk40TEczYVFjX0k] [1 ]

正如你会注意到,列B包含两张表之间的不同数据。 但是,如上所述,我希望备份栏B中的信息根据A栏中的数据replace分配栏B中的内容。 我还包括下面的代码。

编辑我更新了上面的代码,因为我意识到我没有发布正确的代码,我原本试图与。

我亲爱的朋友,你的“密码”是一团糟 – 这是一个非常有礼貌的方式。 我花了半个小时才把它清理干净。 但那只是为了使问题可见。

 Sub MatchEntries() Dim WsA As Worksheet ' Worksheet "Assignments" Dim WsB As Worksheet ' Worksheet "Assignments Backup" Dim WsC As Worksheet ' Worksheet "Checklist" Dim Cell As Range ' Cells in RngA Dim Fnd As Range ' Find match Dim R As Long, C As Long ' row and column With ActiveWorkbook Set WsA = .Worksheets("Assignments") Set WsB = .Worksheets("Assignments Backup") Set WsC = .Worksheets("Checklist") End With For Each Cell In WsB.Range("A2:A400") Set Fnd = WsC.Columns(1).Find(What:=Cell.Value, LookIn:=xlFormulas, LookAt:=xlWhole) ' <--| try finding "Emp #" from Assignments sheet changed cell row column B ' in referenced sheet ("ie "Checklist") column "A" cells not blank cells If Fnd Is Nothing Then '<--| if "Emp #" match not found MsgBox "I couldn't find " & Cell.Value & " in worksheet 'Checklist'" Else ' <-- if "Emp #" match found R = Fnd.Row For C = 27 To 32 ' columns AA to AF WsA.Cells(R, C).Value = WsC.Cells(R, C).Value Next C ' .Range("Fnd:Fnd").Rows(Fnd.Row).Value = Range("Fnd:Fnd").Rows(Target.Row).Value ' <--| paste "Assigmnents" sheet changed cell row columns "AA:AF" content ' in corresponiding columns of referenced sheet ("ie "Checklist") row ' where "Emp #" match was found End If Next Cell End Sub 

首先,不要打电话给你的子“匹配”。 Match是一个工作表function,并没有告诉当Excel遇到“你的”名称select时,它会做什么。

其次,你似乎有3张。 所以,我宣布3张。 从你的post来看,无法判断这个假设是否正确,但我相信你可以看到这个逻辑。 另外,一旦你有这么多的variables,你将需要一个有点想象力的名字。 你不能打电话给你所有的8个儿子John1,John2,John3等。同样,我给你的一个Range命名为Cell和另一个Fnd 。 你将能够通过他们的名字来区分他们。

现在您可以看到您正在查看备份工作表( WsB )A列中的所有单元格。 这看起来不是一个好主意,因为可能会有很多空白的单元格。 匹配将被find他们。 我冒昧地假设你正在查看清单表。 如果这是错误的,现在很容易改变表或列。

如果find一个匹配,你想要做的事情。 我无法弄清楚你想做什么,但是我在那里写了一些代码,这些代码应该很容易理解和修改,以便它可以实现你想要的。