【发布时间】:2022-01-25 23:48:18
【问题描述】:
Sub CountFruit()
Dim RowNumber As Long
Dim i As Long
Dim U As Long
'J = Worksheets("Sheet2").UsedRange.Rows.Count
U = 2
RowNumber = 0
' Turn off at the start
'TurnOffFunctionality
For i = 1 To 65
' Check if cell of column 2 matches column 1
If Worksheets("Sheet1").Range("B" & i).Value = Worksheets("Sheet1").Range("A" & U).Value Then
'Copy results to new Sheet
Sheet1.Cells(i, 2).EntireRow.Copy Destination:=Worksheets("Sheet2").Range("A" & RowNumber + 1)
RowNumber = RowNumber + 1
U = U + 1
End If
Next i
' Print total
Debug.Print "Cell Content "; CStr(Sheet1.Cells(i, 1).Value); " Row number "; RowNumber + 1; " RowNumber equals "; RowNumber; " I equals"; i; " U equal", U
'TurnOnFunctionality
End Sub
我正在比较 A 列和 B 列,匹配的列将剩余的 3 列复制到新工作表中。 B 中有错误的条目,所以我使用 A 列的参考来挽救 B 中剩余的 3 列
循环仅适用于 30 行,这正是 1 页的长度(不知道这是相关的。但我不知道为什么它会无缘无故地停在中间。 然而 For 循环中的 i 是一个更高的数字 及其测试每个单元格,所以我循环遍历所有带有 U 变量的单元格
【问题讨论】:
-
我无法重现错误,我只是复制粘贴了您的代码并在循环结束时 i=66,这是正确的。我唯一能想到的就是数据相关。
-
代码运行,但是当有 100 行时,它停止将行复制到 sheet2 的 30 行
-
这里是数据mega.nz/file/…
-
循环仅适用于 30 行,正好是 1 页的长度是什么意思?打印页?如果是这样,它不应该打扰 VBA。如果不是,你是什么意思?
-
我想你明白了,是的,U 只在有比赛时才运行,但为什么停在 30 处?有 100 行还有更多匹配项让我仔细检查数据。谢谢!爱你们,节日快乐