VBA疑难解答:根据两个条件将一个工作簿中的一个单元格复制到另一个工作簿中的另一个单元格

VBA疑难解答:根据两个条件将一个工作簿中的一个单元格复制到另一个工作簿中的另一个单元格,vba,excel,Vba,Excel,我有两本工作手册,一本是我的主要概述,另一本是我的主要工作手册的精简版,一位同事根据他与我们共享列表中列出的人的联系来写笔记 我想通过检查员工的姓名和ID是否相同,将同事的笔记复制到适当的列中。所以,我想确保迈克·史密斯的笔记,12号抄送到他的那一行,而不是迈克·史密斯的那一行 我的想法是做两个循环,一个循环遍历主工作表的每一行,然后针对特定的主工作表行,循环遍历所有注释表行,查找ID和名称的匹配项,当它找到两者的匹配项时,将注释表中该行的注释复制到相应列中的主工作表 以下是我所拥有的: Pri

我有两本工作手册,一本是我的主要概述,另一本是我的主要工作手册的精简版,一位同事根据他与我们共享列表中列出的人的联系来写笔记

我想通过检查员工的姓名和ID是否相同,将同事的笔记复制到适当的列中。所以,我想确保迈克·史密斯的笔记,12号抄送到他的那一行,而不是迈克·史密斯的那一行

我的想法是做两个循环,一个循环遍历主工作表的每一行,然后针对特定的主工作表行,循环遍历所有注释表行,查找ID和名称的匹配项,当它找到两者的匹配项时,将注释表中该行的注释复制到相应列中的主工作表

以下是我所拥有的:

Private Sub CommandButton1_Click()
Dim jbBook As Workbook

Dim x As Integer
Dim i As Integer

Set jbBook = Workbooks.Open("C:\...\noteWorkbook.xslx")

For i = 2 To 200
    For x = 2 To 200
        If Cells(i, 5) = jbBook.Worksheets(1).Cells(x, 5) Then If Cells(i, 16) = jbBook.Worksheets(1).Cells(x, 16) Then Cells(i, 52) = jbBook.Worksheets(1).Cells(i, 34)

    Next x
Next i

jbBook.Close

End Sub

我认为问题在于:

If Cells(i, 5) = jbBook.Worksheets(1).Cells(x, 5) Then
试着把它改成

If ActiveWorkbook.Cells(i, 5) = jbBook.Worksheets(1).Cells(x, 5) Then
我认为未引用的
单元格()
是导致错误的原因。当然,你必须改变它们


你也可以考虑把I/THEN分解成单独的行,仅仅为了可读性。

你有一个特定的错误吗?如果是,在哪里?是的,对不起,没有错误,只是没有更新的主要书籍。很明显,它会打开笔记本,暂停一秒钟,然后关闭笔记本,但主笔记本上没有任何更新。我第一次在没有if语句和嵌套循环的情况下尝试了这个方法,效果很好,只是将一列复制到另一列,只是弄不清楚VBA是否有一些我不欣赏的模糊条件。您的意思是将单元格更改为:ActiveWorkbook.Worksheets(1)。单元格(I,5)=jbBook.Worksheets(1)。单元格(x,5)那是因为你不会使用jbBook.worksheets(1)。。。只要参考同一张纸两次就行了?是的,如果那是目的地的话。很抱歉,我已经修好了。看起来它确实让东西复制过来了,我只需要检查一下,看看它是否真的做了有条件的检查。谢谢你的帮助,我想有什么方法可以给你一些帮助的道具吗?检查正确答案是好的。赞成票是额外的奖励。很高兴我能帮忙。解决别人的问题总是比解决自己的问题容易。。。