【发布时间】:2022-11-01 13:18:07
【问题描述】:
我想检查工作表s4 中的单元格是否与工作表s1 中的每个单元格具有相同的值
所以我试图“停止”Next c 将c 值设置为前一个单元格,直到条件为真。
我输入msgbox c.Value & "hiiiii" 来检查c 的位置,并且始终是下一个单元格。
Dim s1 As Worksheet
Dim s2 As Worksheet
Dim s3 As Worksheet
Dim s4 As Worksheet
Set s1 = ThisWorkbook.Sheets("test1")
Set s2 = ThisWorkbook.Sheets("test2")
Set s3 = ThisWorkbook.Sheets("test3")
Set s4 = ThisWorkbook.Sheets("test4")
Dim l As Integer
l = 8
lastrow = s4.Range("J" & s4.Rows.count).End(xlUp).row
Set rd = s4.Range("J2:J" & lastrow)
Set rf = s1.Range("A" & l)
For Each c In rd
msgbox c.Value & "hiiiii"
If rf.Value = "" Then: Exit For
If c.Value = rf.Value Then
s1.Range("B" & l).Value = c.Offset(, -1)
l = 8
Set rf = s1.Range("A" & l)
Else
l = l + 1
Set rf = s1.Range("A" & l)
Set c = c.Offset(-1, 0)
End If
Next c
有办法让它工作吗?
谢谢
编辑1:
经过几个小时的努力,我改变了代码,现在它可以工作了:
Dim l As Integer
Dim i As Integer
lastrow = s4.Range("J" & s4.Rows.count).End(xlUp).row
LastRow2 = s1.Range("A" & s1.Rows.count).End(xlUp).row
l = 8
i = 8
Set rd = s4.Range("J2:J" & lastrow)
Set rf = s1.Range("A" & i)
For Each c In rd
If c.Value <> rf.Value Then
For i = 8 To LastRow2
Set rf = s1.Range("A" & i)
If rf.Value = c.Value Then
rf.Offset(, 1).Value = c.Offset(, -1)
End If
Next i
Else
rf.Offset(, 1).Value = c.Offset(, -1)
End If
Next c
End Sub
特别感谢Cyril 和他关于另一个for 选项的提示。
【问题讨论】:
-
这样做时,您会创建一个无限循环,为什么您认为任何事情都会发生变化,因为您无法再向单元格提供任何输入?我建议您提出您的问题,以便清楚您要达到的目标。
-
请检查我的编辑。我所期望的:
rd中的每个单元格检查rf中的每个单元格。找到相同的值后,rd可以转到下一个单元格。所以我试图“停止”next c,直到找到rf中的值。但不工作 -
表格 s1/4 中的构造/虚拟数据的屏幕截图将有助于配对。
-
@JB-007 完成!请检查一下
-
什么需要停止?光标位置?
标签: excel vba excel-formula