Excel VBA复制粘贴值与条件

如果两个字段相同(将这两个字段视为识别每个logging的关键字),我试图将一个小表“带ID的MD”中的值复制到一个较大的表“带ID的D”中。

这是我第一次尝试:

Sub CopyIDCells() Set i = Sheets("MD with ID") Set e = Sheets("D with ID") Dim d Dim j d = 1 j = 2 Do Until IsEmpty(e.Range("B" & j)) d = 2 Do Until IsEmpty(i.Range("A" & d)) If e.Range("C" & j).Value = i.Range("D" & d).Value Then If e.Range("M" & j).Value = i.Range("J" & d).Value Then e.Range("A" & j).Value = i.Range("B" & d).Value End If End If d = d + 1 Loop j = j + 1 Loop End Sub 

这是我的第二次尝试:

 Sub CopyIDCells2() Set i = Sheets("MD with ID") Set e = Sheets("D with ID") Dim d Dim j d = 1 j = 2 Do Until j = 20886 d = 2 Do Until d = 1742 If e.Cells(j, 3).Value = i.Cells(d, 4).Value Then If e.Cells(j, 13).Value = i.Cells(d, 10).Value Then e.Cells(j, 1).Value = i.Cells(d, 2).Value End If End If d = d + 1 Loop j = j + 1 Loop End Sub 

运行此代码时,Excel表格中没有任何更改,但运行“–_-”需要几分钟时间。

..样品被删除

所以看着你的第一个CopyIdCells方法,我只能做一个修正 – 使variablesd = 2。 这在你的示例数据的顶部有标题,你需要像第二行一样在第二行开始。

 Sub CopyIDCells() Set i = Sheets("MD with ID") Set e = Sheets("D with ID") Dim d Dim j d = 2 j = 2 Do Until IsEmpty(e.Range("B" & j)) d = 2 Do Until IsEmpty(i.Range("A" & d)) If e.Range("C" & j).Value = i.Range("D" & d).Value Then If e.Range("M" & j).Value = i.Range("J" & d).Value Then e.Range("A" & j).Value = i.Range("B" & d).Value End If End If d = d + 1 Loop j = j + 1 Loop End Sub 

除此之外,你的公式看起来不错,你只是没有任何数据符合你的要求。 将此列添加到“MD with ID”的底部,您将看到您的代码匹配。

 mouse 10 08 11267 A/JM 823 1/11/2008 1 SC-807 LONG 10/10/2005 

由于您在“案例号”和“其他ID”上匹配,因此两张表中都没有符合此条件的项目。 当您将上面的行添加到“带ID的MD”时,您会在多行中看到添加到第二张纸上的相应ID。