如果2个字段相同(我认为这两个字段是识别每个记录的键),我试图将值从一张小表“MD with ID”复制到一张较大的表“D with ID”。
这是我的第一次尝试:
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表中没有任何变化,尽管运行-_-“只需几分钟。”
..样本被删除
答案 0 :(得分:1)
所以看一下你的第一个CopyIdCells方法,我只会做一个修复 - make变量d = 2。这个标题位于示例数据的顶部,您需要从第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与ID"的底部你会看到你的代码匹配。
mouse 10 08 11267 A/J M 823 1/11/2008 1 SC-807 LONG 10/10/2005
因为您匹配"案例编号" AND"其他ID"两张表中都没有符合此条件的商品。当您将上面的行添加到带有ID"的" MD时,您会在多行上看到添加到第二张表的相应ID。