해결 엑셀2019윈도우11
vba 고수님 부탁드립니다!!
첨부된 사진처럼 시트1 과 시트 2로 나누어서 코드를 작성했습니다.
서로 다른건 "다름"으로 표기하고 싶은데 "다름"이라고 노출이 안됩니다 ㅠㅠ
else 를 사용해 보아도 똑같거다 다르게 도출됩니다 ㅠㅠ 부탁드립니다!!
서로 다른건 "다름"으로 표기하고 싶은데 "다름"이라고 노출이 안됩니다 ㅠㅠ
else 를 사용해 보아도 똑같거다 다르게 도출됩니다 ㅠㅠ 부탁드립니다!!
홍
정
예
당
y
댓글 7
혹시 for eaxh 문으로 가능하나요?부탁드립니다!!
여기선 변수사용법에서 비효율적이라 적절하지 않아요.
for문을 for each문으로 바꿔서 해보려니 너무 어려운거 같아요ㅠ
몇일 고민했는데 감사한 답변 정말감사합니다!!
Sub 비교()
Range("d1").CurrentRegion.ClearContents
Dim a As Range
Dim aa As Range
Set a = Sheet1.Range("a1:a15")
Set aa = Sheet2.Range("a1:a15")
For Each c In a
For Each cc In aa
If c = cc Then
c.Offset(0, 3).Value = "같음"
End If
If c <> cc Then
If c.Offset(o, 3).Value <> "같음" Then
c.Offset(0, 3).Value = "다름"
End If
End If
Next
Next
End Sub
이 경우는 for each를 중첩으로 썼기 때문에, sheet1 셀 1개에 대해서 sheet2의 모든 셀 값을 크로스체크하게 됩니다.
시트1의 1의 값을 시트2의 1부터 15번째셀까지 다 비교하고, 다음 시트1의 2 값을 또 시트2의 1부터 15번째 셀까지 다 비교하고... 이걸 시트1의 셀 갯수만큼 반복합니다. 15x15 = 225번 비교.
그 경우, 적절한 if를 사용하지 않으면 의미없는 마지막의 비교값으로 덮어씌워집니다. 그렇다고 러프하게 exit for를 해버리면, 의도치 않은 시점에 exit 되는 경우가 많으니 좋은 방법은 아닐듯 합니다.
그러므로 하나라도 같은 경우 같음이 나오게끔 같음을 우선값으로 상정하고
d셀의 출력값이 "같음"이 아닌 경우에만, "다름"을 넣을수 있도록 if문을 하나 더 넣어주면 간단하게 해결될듯합니다.
ak님 덕분에 배운거 같습니다!! 설명해주신 내용 잘 이해해서 사용해보겠습니다!! 너무 감사합니다 ^^