안녕하세요, 고수님들~
오빠두엑셀에서 많은 도움을 받고 있고 chatGPT를 통해 코딩을 많이 하고 있습니다~
chatGPT에 아래와 같이 질문을 올렸습니다~
<코딩하고자 하는 시트>

<질문>
엑셀vba로 D열에서 셀값이 같은 셀들이 1개이하이면 그대로 나두고, 2개 이상이고 그 셀들에 해당하는 K열 셀값들이 모두 같으면 그대로 나두고, 아니면 K열 셀들 값이 하나라도 다른 경우, K열 셀값이 "AX000001"이면 해당 L열 셀값에 하이픈" 1"을 추가하고, K열 셀값이 "AX000002"이면 L열 셀값에 하이픈 "2"를 추가하고, D열과 L열을 결합할때 L열 셀값이 비어있으면 그대로 두고, L열에 셀값이 있으면 D열과 결합하고 L열을 삭제해 주는 프로그래밍을 해주세요
<답>
Sub ProcessData()
Dim lastRow As Long
lastRow = Cells(Rows.Count, "D").End(xlUp).Row ' D열의 마지막 행을 찾음

Dim dict As Object ' 딕셔너리 객체 생성
Set dict = CreateObject("Scripting.Dictionary")

Dim i As Long
For i = 2 To lastRow ' 헤더가 있으므로 2부터 시작
Dim dValue As String
Dim kValue As String
Dim lValue As String

dValue = Cells(i, "D").Value
kValue = Cells(i, "K").Value
lValue = Cells(i, "L").Value

If Not dict.exists(dValue) Then
' 딕셔너리에 D열 값이 없으면 추가
' 셀값이 같은 셀들이 1개 이하이면 그대로 나두는 경우
dict(dValue) = Array(kValue, lValue)
Else
Dim values As Variant
values = dict(dValue)

' 셀값이 같은 셀들이 2개 이상이고 그 셀들에 해당하는 K열 셀값들이 모두 같으면 그대로 나두는 경우
If values(0) = kValue Then
dict(dValue) = Array(kValue, lValue)
Else
' K열 셀값이 하나라도 다른 경우
If kValue = "AX000001" Then
lValue = lValue & "-1"
ElseIf kValue = "AX000002" Then
lValue = lValue & "-2"
End If
dict(dValue) = Array(kValue, lValue)
End If
End If
Next i

' 딕셔너리에 저장된 값을 기반으로 D열과 L열을 처리
For i = 2 To lastRow ' 헤더가 있으므로 2부터 시작
' Dim dValue As String
' Dim lValue As String

dValue = Cells(i, "D").Value
lValue = dict(dValue)(1) ' 딕셔너리에서 L열 값 가져오기

If lValue = "" Then
' L열 셀값이 비어있으면 그대로 두는 경우
Else
' L열 셀값이 있으면 D열과 결합하고 L열 삭제
Cells(i, "D").Value = dValue & " " & lValue
Cells(i, "L").ClearContents
End If
Next i
End Sub
<결과>

<오류부분>

D열 8행 값이 20230412-108-1 이어야 하는데 20230412-108-2로 나왔습니다~

이 부분을 해결하고자 도움을 구하고 있습니다. 벌써 사흘째입니다^^;;

도움을 부탁드립니다~