我的循环没有在整张纸上运行时遇到问题1.如果表1和#34中的值测试"存在于表2和癌症中#34;那么我想要表2中的价值"癌症"放入表1和#34;测试"。除循环外,代码可以正常工作。目前它只适用于我的第一张纸上的第一张记录然后停止。
Sub Testing()
Dim x As Long
Dim y As Long
x = 2
y = 2
Do While Sheets("Cancer").Cells(y, 1).Value <> ""
If LCase(Trim(Sheets("Cancer").Cells(y, 1).Text)) = LCase(Trim(Sheets("Tests").Cells(x, 3).Text)) Then
If Sheets("Tests").Cells(x, 4).Value = "" Then
Cells(x, 4) = (Trim(Sheets("Cancer").Cells(y, 3).Text))
x = x + 1
End If
End If
y = y + 1
Loop
End Sub
答案 0 :(得分:2)
我会使用两个for循环
for y = 2 to 10000 'the range your values are found
if Sheets("Cancer").Cells(y, 1).Value <> "" then
for x = 2 to 10000 'the range your values are in
If LCase(Trim(Sheets("Cancer").Cells(y, 1).Text)) = LCase(Trim(Sheets("Tests").Cells(x, 3).Text)) and Sheets("Tests").Cells(x, 4).Value = "" Then
Cells(x, 4) = (Trim(Sheets("Cancer").Cells(y, 3).Text))
End If
next
end if
next
循环未在整个工作表1中运行的原因是因为这两行:
If LCase(Trim(Sheets("Cancer").Cells(y, 1).Text)) = LCase(Trim(Sheets("Tests").Cells(x, 3).Text)) and Sheets("Tests").Cells(x, 4).Value = ""
如果这些条件都不是真的,则x将永远不会循环到下一次迭代,并且您将完成循环遍历Sheet2“Cancer”的每个值,同时仅检查Sheet1“Tests”的相同记录。
答案 1 :(得分:1)
你几乎完全符合你的所有范围。你错过了一个。尝试更改行:
Cells(x, 4) = (Trim(Sheets("Cancer").Cells(y, 3).Text))
到
Sheets("Tests").Cells(x, 4) = (Trim(Sheets("Cancer").Cells(y, 3).Text))