【发布时间】:2016-03-18 16:37:03
【问题描述】:
我写了下面的代码。它是一个循环内循环。第一个循环运行以在所有第二个循环的所有范围(sheet2)中搜索第一个范围的值(sheet1)。如果满足条件,我希望第二个循环停止并继续下一个值。
如果满足条件,我将使用“退出”来停止第二个循环。但问题是......
当第一个循环 = 2 时,第二个循环也是 2 并且满足条件,第二个循环停止。第一个循环变为 = 3,但第二个循环仍然保持 = 2,这导致不匹配和失败。请帮忙。
For I = 2 To REND
For P = 2 To ENDROW
If Range("D" & I) = D.Range("c" & P) Then
If Range("H" & I) = D.Range("F" & P) Then
Range("A" & I) = "MATCHED"
Exit For
Else
Range("A" & I) = "DIFFERENCE OF " & Range("G" & I) - D.Range("F" & P)
End If
Else
Range("A" & I) = "AP NOT FOUND"
End If
Next P
Next I
声明在哪里:
Dim D As Worksheet, F As Worksheet, R As WorksheetDim X As String
Dim I As Integer, ENDROW As Integer, FEND As Integer
Dim P As Integer, REND As Integer, L As Integer
Set D = ActiveWorkbook.Sheets("DWAC")
Set F = ActiveWorkbook.Sheets("FPS")
Set R = ActiveWorkbook.Sheets("RAW")
ENDROW = D.Range("C2").End(xlDown).Row
FEND = F.Range("C2").End(xlDown).Row
REND = R.Range("C2").End(xlDown).Row
【问题讨论】:
-
我可能还没有完全理解您的问题,但是为什么您为比较范围的一侧定义页面而不为另一侧定义页面? (即您使用 'range("G" & I) - D.Range("F" & P) 为什么没有定义第一个范围 'page'?除此之外,您正在隐式比较 'values',即没有定义.Value 范围的属性?这可能是不匹配的错误,因为在这种情况下没有定义到底应该比较什么?
-
所以我使用
with sheet作为第一个范围,所以真的不需要使用page.range -
第二个比较字段包含整数,因此不使用
range.value -
GD Akkitech,如果你在这个循环中使用
with sheet,那么你应该使用.Range而不仅仅是Range- 注意点- !!