며칠전에 연락한 후 따로 연락이 없어서 다 끝난건가 싶었는데, 오늘 아침 다시 연락이 왔습니다.
마무리 작업을 진행 중이군요.
한 가지 일을 처리하는데도 완전히 끝내려면 꽤나 많은 일이 필요하군요.
연락 온 용건은 반복지급된 내역 중 중복자의 경우 한 번만 나타내도록 색상을 지정하는 것이었습니다.
아주 흔한 작업이고 공식 같은 코드가 있습니다.
Public Sub 중복자한명만색상으로나타내기()
i = 4
이름 = ""
Do
If Range("B" & i).Value <> 이름 Then
Range("B" & i).Interior.ColorIndex = 19
이름 = Range("B" & i).Value
End If
i = i + 1
Loop While Range("B" & i).Value <> ""
End Sub
단지 귀찮은 점은 여러 개 파일로 나눠져 있어 파일을 하나씩 열어 작업하고 다시 닫는 일이었습니다.
이럴 바에 코드 자체에서 파일을 열어 처리하도록 하는게 빠르고 귀찮음을 줄일 수 있었겠다 싶습니다.
7월 15일 다시 처리 작업 요청이 들어왔습니다.
계좌번호를 기준으로 전화번호를 찾아 등록하는 것이었습니다.
앞에서 작업한 내용을 조금 수정해서 다시 처리했습니다.
Public Sub 전화번호찾아나타내기()
Dim sht1 As Worksheet
Dim sht2 As Worksheet
Dim strAddr As String
Dim C As Range
Dim i As Long
Dim P(1 To 50) As String ' 찾은 전화번호 저장
Dim CHUL(1 To 50) As String ' 중복검사해 출력 전화번호 저장
Dim 확인 As Boolean
Dim 출력 As String
시트 = "작업시트"
열 = "I" ' 찾을 값
비교열 = 16 ' P열 찾는 열
Set sht1 = ActiveSheet
Set sht2 = Sheets(시트)
시작 = 4
끝 = sht1.Range("A" & 시작).End(xlDown).Row
열번호 = Range(열 & "1").Column ' 열에 해당하는 숫자 구함 I : 9
출력열 = "J"
시작시간 = timer
Application.ScreenUpdating = False
For i = 시작 To 끝
j = 1
Set C = sht2.Columns(비교열).Find(sht1.Cells(i, 열번호).Value, LookAt:=xlWhole)
If Not C Is Nothing Then
strAddr = C.Address
Do
P(j) = C.Offset(0, -1).Value
j = j + 1
Set C = sht2.Columns(비교열).FindNext(C)
Loop While Not C Is Nothing And C.Address <> strAddr
End If
m = 1
확인 = True
For k = 1 To j - 1
For l = 1 To m
If P(k) = CHUL(l) Then
확인 = False
Exit For
End If
Next l
If 확인 Then
CHUL(m) = P(k)
m = m + 1
End If
확인 = True
Next k
For k = 1 To m - 1
출력 = 출력 & CHUL(k) & ", "
Next k
If Len(출력) > 2 Then
출력 = Left(출력, Len(출력) - 2)
End If
sht1.Range(출력열 & i).Value = 출력
출력 = ""
For k = 1 To j - 1
P(k) = ""
CHUL(k) = ""
Next k
DoEvents
Next i
Application.ScreenUpdating = True
Beep
MsgBox "총 " & format(timer - 시작시간, "#,##0") & "초 소요"
End Sub
이렇게 반복되는 작업이 있을 때 직접 코딩해 작업을 쉽고 빠르게 할 수 있도록 소개를 잘해야 하는데, 차근차근 소개하는게 쉽지 않군요.
'엑셀' 카테고리의 다른 글
일정한 기준으로 배정하기 (0) | 2021.01.07 |
---|---|
엑셀 사용자 지정 서식에서 사용할 수 있는 색상명 (0) | 2021.01.07 |
Change 이벤트와 Calculate 이벤트 (0) | 2020.07.11 |
엑셀 VBA로 자료 처리 - 신청자, 회원목록 비교 3 (0) | 2020.07.09 |
Excel에서 작성한 Chart를 Word로 옮기기 (0) | 2020.05.20 |