Do~Loop (4)
엑셀 VBA #90 / 데이터재배치 [VBA]
반응형

엑셀 VBA #90 / 데이터재배치 [VBA]

Sub vba90강231231()

Dim rng As Range, c As Range
Dim nc As New Collection
Dim j As Long, i As Long, k As Long
Dim a()

' C열 데이타를 텍스트 타입으로 바꾸기
Set rng = Range("c5", Cells(Rows.Count, "c").End(3))
rng.TextToColumns Destination:=rng, fieldinfo:=Array(1, 2)


'정렬하기
Range("b5", Cells(Rows.Count, "c").End(3)).Sort Range("b5", Cells(Rows.Count, "c").End(3))(1, 2)

'New Collection & 배열 접목
On Error Resume Next
For Each c In rng
      nc.Add Trim(c), CStr(Trim(c))
Next
On Error GoTo 0

j = 1   'j의 초기값을 설정하지않으면 0부터 시작함..nc의 초기값은 1이므로 본 코드 필요
i = 5
Range("e4").Select

Do
      Do While Cells(i, "c") = nc(j)
            ReDim Preserve a(k)
            a(k) = nc(j) 'nc(j)의 값을 동적배열 a변수에 집어 넣기
            ActiveCell.Offset(1) = k + 1
            ActiveCell.Offset(1, 1) = nc(j)
            ActiveCell.Offset(1).Select
            k = k + 1
            i = i + 1
      Loop
            j = j + 1
            k = 0
            Erase a
            ActiveCell.Offset(1).Select
Loop While j <= nc.Count


End Sub

 

 

 

 



https://www.youtube.com/watch?v=x9b1bRVoMic&t=736s

ㅁㅁㅁ

반응형
  Comments,     Trackbacks
엑셀 VBA #45 / Find메서드_변형3 [VBA] - 중복표시
반응형

엑셀 VBA #45 / Find메서드_변형3 [VBA]

Dim sh8 As Worksheet, sh7 As Worksheet
Dim rng As Range, cf As Range
Dim ad As String

Set sh8 = Sheets("2018")
Set sh7 = Sheets("2017")
Set rng = sh7.Range("B3", sh7.Cells(Rows.Count, "B").End(xlUp))

'Cells(Rows.Count,"B")만 쓰면 오류 발생가능성 있으므로, 시트명 sh7를 붙힐 것

For Each c In sh8.Range("B3", sh8.Cells(Rows.Count, "B").End(xlUp))
    Set cf = rng.Find(c, , , xlWhole)
    If Not cf Is Nothing Then
        ad = cf.Address
        Do
            c.Offset(, 2) = "○"
            Set ccf = rng.FindNext(cf)
        
        Loop Until cf.Address = ad
    End If

결과값
vba#45.xlsm
0.02MB


https://www.youtube.com/watch?v=hSXQKoyhXNE&list=PLfxvqpVCYZ8e0qlyc_FU46neoWjO7yTWj&index=45


반응형
  Comments,     Trackbacks
엑셀 VBA #44 / Find메서드_변형2 [VBA] - 역방향으로 찾기
반응형

엑셀 VBA #44 / Find메서드_변형2 [VBA] - 역방향으로 찾기



Dim rng As Range, cf As Range
Dim ad As String

Set rng = Range("B3", Cells(Rows.Count, "B").End(xlUp))
Set cf = rng.Find("서울", Range("B18"), , xlWhole, , xlPrevious)

If Not cf Is Nothing Then
    ad = cf.Address
    Do
        
        Cells(Rows.Count, "E").End(3)(2) = cf.Offset(, -1)
        Set cf = rng.FindPrevious(cf)
    
    Loop Until cf.Address = ad
    
End If

결과값
vba#44.xlsm
0.02MB



https://www.youtube.com/watch?v=beI2XhKg3Yg&list=PLfxvqpVCYZ8e0qlyc_FU46neoWjO7yTWj&index=44


반응형
  Comments,     Trackbacks
엑셀 VBA #43 / Find메서드_변형1 [VBA]
반응형

엑셀 VBA #43 / Find메서드_변형1 [VBA]


Dim rng As Range, cf As Range
Dim ad As String

Set rng = Range("A2", Cells(Rows.Count, "A").End(xlUp))
Set cf = rng.Find("A-1", , , xlWhole)

If Not cf Is Nothing Then          'cf값이 있으면
    ad = cf.Address                    'ad라는 변수에 cf값을 넣는다.
    Do
        cf.Interior.ColorIndex = 43
        Set cf = rng.FindNext(cf)       '기존 찾았던 cf셀 이후로 찾는다--findnext
    Loop Until cf.Address = ad        'cf의 주소가 처음 주소와 같을 때 까지 Do~Loop구문작동
End If


[실무에서 가장 많이 사용되는 Find문 구조]
If Not cf Is Nothing Then  
    ad = cf.Address        
    Do
        
    Loop Until cf.Address = ad  
End If

https://www.youtube.com/watch?v=rVCct3N5VOA&list=PLfxvqpVCYZ8e0qlyc_FU46neoWjO7yTWj&index=43

반응형
  Comments,     Trackbacks
최근 작성 글
최근 작성 댓글
최근 작성 트랙백
프로필
공지사항
글 보관함
캘린더
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
TODAY TOTAL