我正在尝试在Excel VBA中运行以下代码,但 Else 条件错误地覆盖 If 条件。因此,所有每条j记录都被标识为不匹配。然而,当我删除 Else 条件时, If 条件正常运行并将j记录与相应的i记录匹配。
For j = 1 To 27
For i = 1 To 37
If Dec1998(i) = DecGIS(j) And Stream1998(i) = StreamGIS(j) And Trib1998(i) = TribGIS(j) Then
ID_GIS(j) = Rec1998(i)
Else
ID_GIS(j) = "No match"
End If
Next i
Next j
为简洁起见,我在问题中只包含了整个代码的子部分。为清楚起见,我附上了以下截图:
由于我缺乏声誉点,我无法上传任何图片;否则我会提供没有Else条件的 j记录以及整个VBA代码的屏幕截图。
如何修改我的代码,以便 Else 条件仅在没有相应的i记录时将j记录标识为“不匹配”?
答案 0 :(得分:4)
将其置于内循环之前,并在找到匹配后退出内循环。
这种方式"No Match"
是默认值,如果找到匹配则会被覆盖。
For j = 1 To 27
ID_GIS(j) = "No match"
For i = 1 To 37
If Dec1998(i) = DecGIS(j) And Stream1998(i) = StreamGIS(j) And Trib1998(i) = TribGIS(j) Then
ID_GIS(j) = Rec1998(i)
Exit For
End If
Next i
Next j