[엑셀 실무][range.find를 이용한](여러 업체가 있는 )업체명부에서 업체별로 (열 단위로)근무자 뽑아내기
위 자료를 아래 모양을 바꾸기
Sub get_com_man()
Dim rngX As Range
Dim shtX As Worksheet
Dim shtY As Worksheet
Set shtX = Worksheets("업체명부")
Set shtY = Worksheets("근무자")
Set rngX = shtX.Range("a1").CurrentRegion
Dim r As Long
Dim row As Range
Dim scode As String
Dim rngF As Range 'Find는 값을 찾으나 Range 의 형식을 갖는다
shtY.Range("a2:y10000").Clear
For r = 2 To rngX.Rows.Count
Set row = rngX.Rows.Item(r) 'rngX의 행범위를 담는다.
scode = row.Cells(1).Value '왼 코드를 이 코드(scode = row.Cells(r, "a").Value)로 바꾸면
'값이 이상해지고,디버그발생한다. 왜?
Set rngF = shtY.Columns(1).Find(scode) 'Columns(1) = Columns("A:A")
'shtY.Range("a2:y10000").Clear '본 코드를 이 자리에 있으면 모듈 에러남...?
If rngF Is Nothing Then
shtY.Range("a10000").End(xlUp).Offset(1).Resize(1, 3).Value = _
Array(row.Cells(1).Value, row.Cells(2), row.Cells(4).Value)
Else
rngF.End(xlToRight).Offset(0, 1).Value = row.Cells(4).Value
End If
Next r
End Sub
For r = 2 To rngX.Rows.Count
Set row = rngX.Rows.Item(r)
scode = row.Cells(1).Value
Set rngF = shtY.Columns(1).Find(scode)
If rngF Is Nothing Then
shtY.Range("a10000").End(xlUp).Offset(1).Resize(1, 3).Value = _
Array(row.Cells(1).Value, row.Cells(2), row.Cells(4).Value)
Else
rngF.End(xlToRight).Offset(0, 1).Value = row.Cells(4).Value
End If
https://www.youtube.com/watch?v=pqFFI-SNs_g&list=PLxmyPu_Id2snuVKanUgX_buujbFPjiY-R&index=108
2023.12.15 - 엑셀 VBA #42 / Find메서드_기본 [VBA]
2024.01.11 - [VBA] Dictionary에 대한 이해1