Sub finddataalfa1()
Dim athletename As String
Dim finalrow_A As Integer
Dim finalrow_D As Integer
Dim i As Integer
Dim j As Integer
finalrow_A = Sheets("db1").Cells(Rows.Count, 1).End(xlUp).Row
finalrow_D = Sheets("db1").Cells(Rows.Count, 4).End(xlUp).Row
For i = 1 To finalrow_D
athletename = Sheets("db1").Cells(i, 4).Value
For j = 1 To finalrow_A
If Cells(j, 1) = athletename Then 'if match between lets say D1 and A1
Cells(j, 5) = Cells(j, 2).Value 'copy B1 value to E1 cell
End If
Next j
Next i
End Sub
此代码工作正常。它取自D1
的值 - 在列A
中找到它。如果找到,请说A10
单元格,脚本取值B10
并将其复制到E10
单元格。但是有一个错误:
A B C D E
AB0023999 3999 AB0023999 3999
AB0024000 4000 AB0024000 4000
AB0024001 4001 AB0024001 4001
AB0024002 4002 5000000
AB0024003 4003 AB0024003 4003
AB0024004 4000 AB0024004 4000
AB0024005 4005 AB0024005 4005
AB0024006 3999 AB0024006 3999
AB0023999 3999 56666 3999
AB0024000 4000 56666 4000
AB0024001 4001 56667 4001
AB0024002 4002 56668
AB0024003 4003 56669 4003
AB0024004 4000 56670 4000
AB0024005 4005 56671 4005
AB0024006 3999 56672 3999
如您所见D1
= A1
,所需B1
并复制到E1
转到D2
...
除非它达到值56666
为什么它与A列匹配......我不明白。 3999的值来自哪里..
非常感谢您的帮助!
提前谢谢!
答案 0 :(得分:1)
你可能忘记了宏在找到第一个匹配时没有停止。让我们把你的第一个数字放在D列 - AB0023999。它开始循环通过A列,立即在第一行找到匹配项。因此它将B复制到E,但在A列中继续,直到它在第9行再次找到AB0023999,因此它再次将B复制到E. 如果只想在A和E列中的数字等于同一行时从B复制,那么您可以简单地使用公式
=IF(D2=A2;B2;"")