Sub test()
Dim myRng1 As Range, myRng2 As Range
Dim tbl1 As Variant, tbl2 As Variant
Dim i As Long, j As Long, myRow As Long
Set myRng1 = Worksheets("Sheet1").Range("A1").CurrentRegion
Set myRng2 = Worksheets("Sheet2").Range("A1").CurrentRegion
tbl1 = myRng1.Value
tbl2 = myRng2.Value
For i = 2 To UBound(tbl2) '????
myRow = 0
On Error Resume Next
With Application.WorksheetFunction
myRow = .Match(tbl2(i, 1), .Index(tbl1, 0, 1), 0)
End With
On Error GoTo 0
If myRow = 0 Then
myRng2.Rows(i).Interior.ColorIndex = 8
Else
For j = 1 To 17
If tbl1(myRow, j) <> tbl2(i, j) Then
myRng2.Cells(i, j).Interior.ColorIndex = 6
End If
Next j
End If
Next i
End Sub
배열을 쓰고있진않고
a1부터 값이 들어있는 셀까지 범위를 지정하는 방식으로 쓰고있습니다만
코드자체엔 별 문제가 없는거같은데 문제는 셀에 들어있는 텍스트가 너무 많아지면 코드가 돌지를 않고
모든 셀을 ColorIndex = 8로 칠해버립니다 ㅠㅠ
Match라는 함수를 잘분석해봐. 오류 검출가능하게
Match 단순히 값이 일치하는지 여부를 따지는 함수아닌가요?
졸라 긴 텍스트도 처리할만한 custom match 함수라도 만들든가 ㅇㅇ
vba 는 각 서브루틴별 가용메모리가 64kB로 제한됬던거 같은데... 루프처리를 몇개의 서브루틴에 분산시키던지 해보세요
tbl1,2에 비교대상 전부를 꾸껴놓은게 문제인거 같네요
ㅁ//됬->됐 (되어 = 돼임) [리듬 맞춤법 봇♬]