이 게시판은 아별닷컴 회원만 질문을 올릴 수 있습니다. 회원에게 주어지는 특권인셈이지요. 회원이 아닌 분들은 열람만 가능합니다.
글 수 822
안녕하세요. 아별님 파이스입니다!
그간 폭염같은 무더위에 이어이제는 질릴것 같은 빗줄기까지... 잘 지내고 계셨나요?
오늘은 지난번에 드렸던 질문의 확장판(?) 같은 것인데요,우선 지난번에 가르쳐 주신 다음과 같은 프로시져가 있습니다.
Option ExplicitSub compareSheets() Dim ws1 As Worksheet, ws2 As Worksheet
Dim r As Long, c As Long
Dim maxr As Long, maxc As Long
Dim diff As Long Set ws1 = Sheets(1)
Set ws2 = Sheets(2) maxr = ws1.UsedRange.SpecialCells(xlLastCell).Row
maxc = ws1.UsedRange.SpecialCells(xlLastCell).Column diff = 0
For r = 1 To maxr
For c = 1 To maxc
If ws1.Cells(r, c).Formula <> ws2.Cells(r, c).Formula Then
diff = diff + 1
ws1.Cells(r, c).Interior.ColorIndex = 3
ws2.Cells(r, c).Interior.ColorIndex = 3
End If
Next c
Next r MsgBox "다른셀의 개수 :" & diffEnd Sub
위의 내용은 서로다른 두시트를 비교하는 내용으로,
7, 8행 의Set ws1 = Sheets(1)
Set ws2 = Sheets(2) 부분을
Set ws1 = workbook(1).Sheets(1)
Set ws2 = workbook(2).Sheets(1)로 변형하기도 하면서 잘 쓰고 있었는데요,
갑자기 이런 상황이 발생한 것입니다.각각 시트가 10개 이상인 2개의 엑셀파일(워크북)을 통채로 비교하려면 어떻게 해야되지???저는 순간 멍해지면서 이리저리 수정 해보기 시작했습니다.
위의 7,8행을Set ws1 = workbook(1)
Set ws2 = workbook(2)으로도 고쳐보고
Set ws1 = workbook(1).Sheets(1)&Sheets(2)&Sheet(3)......
Set ws2 = workbook(2).Sheets(1)&Sheets(2)&Sheet(3)......으로도 고쳐보고
3행의 ws1 지정도 workbook으로 바꾸어보고 해봤으나...
아쉽게도 모두 작동하지 않았습니다. ㅠ.ㅠ
위와 같은 상황에서 한수 가르침을 청하겠습니다.편안한 하루 보내십시오.
그간 폭염같은 무더위에 이어이제는 질릴것 같은 빗줄기까지... 잘 지내고 계셨나요?
오늘은 지난번에 드렸던 질문의 확장판(?) 같은 것인데요,우선 지난번에 가르쳐 주신 다음과 같은 프로시져가 있습니다.
Option ExplicitSub compareSheets() Dim ws1 As Worksheet, ws2 As Worksheet
Dim r As Long, c As Long
Dim maxr As Long, maxc As Long
Dim diff As Long Set ws1 = Sheets(1)
Set ws2 = Sheets(2) maxr = ws1.UsedRange.SpecialCells(xlLastCell).Row
maxc = ws1.UsedRange.SpecialCells(xlLastCell).Column diff = 0
For r = 1 To maxr
For c = 1 To maxc
If ws1.Cells(r, c).Formula <> ws2.Cells(r, c).Formula Then
diff = diff + 1
ws1.Cells(r, c).Interior.ColorIndex = 3
ws2.Cells(r, c).Interior.ColorIndex = 3
End If
Next c
Next r MsgBox "다른셀의 개수 :" & diffEnd Sub
위의 내용은 서로다른 두시트를 비교하는 내용으로,
7, 8행 의Set ws1 = Sheets(1)
Set ws2 = Sheets(2) 부분을
Set ws1 = workbook(1).Sheets(1)
Set ws2 = workbook(2).Sheets(1)로 변형하기도 하면서 잘 쓰고 있었는데요,
갑자기 이런 상황이 발생한 것입니다.각각 시트가 10개 이상인 2개의 엑셀파일(워크북)을 통채로 비교하려면 어떻게 해야되지???저는 순간 멍해지면서 이리저리 수정 해보기 시작했습니다.
위의 7,8행을Set ws1 = workbook(1)
Set ws2 = workbook(2)으로도 고쳐보고
Set ws1 = workbook(1).Sheets(1)&Sheets(2)&Sheet(3)......
Set ws2 = workbook(2).Sheets(1)&Sheets(2)&Sheet(3)......으로도 고쳐보고
3행의 ws1 지정도 workbook으로 바꾸어보고 해봤으나...
아쉽게도 모두 작동하지 않았습니다. ㅠ.ㅠ
위와 같은 상황에서 한수 가르침을 청하겠습니다.편안한 하루 보내십시오.
파이스님..
VBA의 기본 개념 부터 다시 공부해보실 것을 권해드립니다.
책을 한권 사서 엑셀의 개체 모델부터 찾아보세요..
Application이 최 상위고..
Workbook 다음에 WorkSheet 그리고 맨 하단이 Range입니다.
시트가 각각 10개인 웍북을 비교하려면 어떻게 하겠습니까?
set wb1 = workbooks(1)
set wb2 = workbooks(2)
라고 각각의 웍북을 정의해주고요..
for i = 1 to wb1.Sheets.count
' 이 안에 각각의 웍크시트를 비교해주는 기능이 필요하겠죠?
if wb1.sheets(1).cells(1,1) = wb2.sheets(i).cells(1,1) then
'셀에 체크..
End If
next i
위 수식에서 cells안의 (1,1) 질문 올리신 글의 r과c에 대응해서 변경해보시기 바랍니다.
일단 이정도만 팁을 드려봅니다.
물고기를 잡는 방법을 알려드리는 심정으로 댓글 달아봤습니다.
그냥 잡아드리는게 좋을까요?
답변을 달면서 항상 하는 고민입니다.
즐거운 하루 되세요.. ^^