
Sheet1
"AR"로 이름을 바꾼 A열과 "여기에 붙여넣기"로 이름을 바꾼 A열의 값을 비교 Sheet2
하고 다른 시트에 존재하지 않는 값이 포함된 행을 강조 표시하려고 합니다. (두 열 모두 빈 셀로 끝납니다.) 제가 여기에서 원했던 것과 비슷한 일을 한다고 생각되는 매크로를 찾았습니다.여러 Excel 시트에서 중복 레코드를 효율적으로 제거, 내 필요에 맞게 수정하려고 하는데 제대로 작동하지 않습니다. 현재 실행하면 Excel이 잠기고 Excel에서 작업을 종료해야 합니다.
이것이 내가 지금까지 가지고 있는 것입니다:
Option Explicit
Sub Compare2()
Application.ScreenUpdating = False
Dim startRow As Integer
startRow = 1
Dim row As Integer
row = startRow
Dim bRow As Integer
'sharks below, cap'ain
' This loop is looping on row.
' Scan down column AR!A (i.e., Sheet1!A) until we find an empty cell.
Do While (Worksheets("AR").Range("A" & row).Value <> "")
Dim aVal As String
aVal = Worksheets("AR").Range("A" & row).Value
bRow = startRow 'I see thy booty
' This loop is looping on bRow. Scan down column 'Paste Here'!A
' (i.e., Sheet2!A) until we find an empty cell.
Do While (Worksheets("Paste Here").Range("A" & bRow).Value <> "")
Dim aVal2 As String
aVal2 = Worksheets("Paste Here").Range("A" & bRow).Value
If (aVal <> aVal2) Then
Worksheets("AR").Rows(row).Interior.ColorIndex = 6
' we found a traitor; feed 'em to the sharks
row = row - row
Exit Do
End If
If (aVal2 <> aVal) Then
Worksheets("Paste Here").Rows(row).Interior.ColorIndex = 6
row = row - row
Exit Do
End If
bRow = bRow + 1
Loop
row = row + 1
Loop
End Sub
당신이 제공할 수 있는 어떤 도움이라도 도움이 될 것입니다.
답변1
수정을 시작하기 전에 잠식하고 있던 서브루틴을 더 잘 이해하지 못했다는 점은 유감입니다.
- "WalkThePlank" 서브루틴은 다음을 찾고 있습니다.성냥.
Sheet1
의 행과 일치하는 행을 찾으면Sheet2
조치를 취합니다. 당신은 독특한 가치를 찾고 있습니다. 즉, 의 행은Sheet1
의 어떤 것과도 일치하지 않으며Sheet2
그 반대의 경우도 마찬가지입니다. 하지만 당신은 무엇입니까?행위일치하지 않는 행 쌍을 트리거합니다. 즉,Sheet1!Row 1
일치하지 않으면Sheet2!Row 1
조치를 취합니다. 이는 시기상조입니다. 스캔해야 해모든 방법일치 여부를Sheet2
확인하기 위해Sheet1!Row 1
어느행에Sheet2
. "WalkThePlank" 서브루틴의 작성자는 별로 의미가 없는 일을 했습니다. 변수 에 의해 인덱싱된 행을 삭제한 후
row
변수를 0으로 설정했습니다. 이는 서브루틴이Sheet1
이미 검사하고 고유하다고 판단한 모든 행을 다시 검사하게 하므로 낭비였습니다. 그러나 고유하지 않은(즉,bRow
의 행과 일치하는) 행을 삭제하므로Sheet2
해당 행을 보지 않습니다.저것다시 행하면 무한 루프가 없습니다. 호기심을 더욱 가중시키기 위해 그는 이렇게 말할 수도 있었지만row = 0
, 대신에 아리송하게 말했다row = row - row
.하지만 그것을 바꿔야 합니다. (더 정확하게 말하면 루프
row = …
내부의 명령문을 제거해야 한다고 생각합니다Do While
. 끝 부분을 제외하고는row = row + 1
.) 행을 삭제하는 것이 아니기 때문에 이 명령문은하다매크로를 다시 검사하게 만듭니다.동일한 데이터다시 반복하여; 즉, 무한 루프입니다. 당신 은 계속 행진 해야 합니다Sheet1
.- Ctrl+ 를 입력하여 Excel을 종료하고 데이터를 잃지 않고 VBA 무한 루프를 중단할 수 있습니다 Break. 키보드에 키가 없는 경우 을 실행 하고 을 클릭한 후 을 클릭하여 Break화상 키보드를 불러오세요 . 그래도 작동하지 않으면 다음을 시도하십시오 .
osk
CtrlPauseCtrlScrLk
슈퍼 유저는 스크립트 작성 서비스가 아닙니다. 지금 문제를 해결할 수 있을 만큼 무엇이 잘못되었는지 충분히 설명했다고 생각합니다. 그래도 작동하지 않으면 다시 돌아와서 문제가 발생한 부분을 알려주세요.