For Each~Next (4)
엑셀 VBA #29 / VBA함수(split) [VBA]
반응형

엑셀 VBA #29 / VBA함수(split) [VBA]

1. 목적 : VBA함수 Split 사용법 습득
2. Split함수 구조
VBA.Split(대상,구분자)   또는
Split(대상, 구분자)

3. 사용
  3.1. For~Next문
    Dim s As Variant
    Dim i As Long

    s = Split(Range("A2"), " ")

    For i = 0 To UBound(s)
        Cells(i + 5, "A") = s(i)
    Next

  3.2. For Each~Next문
    Dim s As Variant
    Dim j As Long

    For Each s In Split(Range("A2"), " ")
        Cells(j + 5, "A") = s
        j = j + 1
    Next

 



@ayje5718   2년 전
좋은강의 잘 보고 있습니다. 감사합니다. 이전 강의에서 동적 배열을 선언하는 영상을 보고 해당 영상을 보니 갑자기 헷갈립니다 ㅠ 변수방에 값을 받아 배열로 출력하는부분에 동적 배열을 선언해 사용한다고 생각했는데 아니네요 ㅠ 그럼 변수에 배열을 선언하는건 어떤 경우인가요
      @user-dq4gc5hl5j   2년 전
      안녕하세요, 반갑습니다 :)
       프로시저의 처리속도를 높이기 위해서는 배열 사용이 필수입니다. 
       그런데 배열을 이해하고, 실무에 적용하는데 시간이 조금 소요됩니다.
       한번에 이해가 안되도 조급해하지 마시고
       여러 코딩 경험을 통해 배열 개념이 정리되는 시간을 주셔요^^
       먼저 VBA #126 영상을 살펴보시길 추천합니다.

 

 


https://www.youtube.com/watch?v=OCbhs5a71ZQ&list=PLfxvqpVCYZ8e0qlyc_FU46neoWjO7yTWj&index=29

반응형
  Comments,     Trackbacks
엑셀 VBA #26 / For Each~Next_2 [VBA] - New Collection
반응형

엑셀 VBA #26 / For Each~Next_2 [VBA] - New Collection

On Error Resume Next
For Each c In rng
      dc.Add Trim(c), CStr(Trim(c))
Next
On Error GoTo 0

 

 

 

For i = 1 To dc.Count
      Cells(i + 11, "A") = dc(i)
      Cells(i + 11, "B") = Application.SumIf(rc, dc(i), rs)

 

Sub For_Each_Next_and_New_Collection_고유값합계()

Dim dc As New Collection
Dim rng As Range
Dim c As Range
Dim i As Long
Dim rc As Range, rs As Range

Set rng = Range("A2:A" & Range("A2").CurrentRegion.Rows.Count)
'=Set rng = Range("A2", Cells(Rows.Count, "A").End(xlUp))


On Error Resume Next
For Each c In rng
      dc.Add Trim(c), CStr(Trim(c))
Next
On Error GoTo 0

Range("A11") = "고유목록별 합계"

Set rc = Range("A2:A9")
Set rs = Range("B2:B9")

For i = 1 To dc.Count
      Cells(i + 11, "A") = dc(i)
      Cells(i + 11, "B") = Application.SumIf(rc, dc(i), rs)
      
Next
End Sub

 

vba#26.xlsm
0.02MB

 

핵심정리

On Error Resume Next
For Each c In rng
      dc.Add Trim(c), CStr(Trim(c))
Next
On Error GoTo 0

 

https://www.youtube.com/watch?v=BC_O6sVx4SA&list=PLfxvqpVCYZ8e0qlyc_FU46neoWjO7yTWj&index=26

How to use VBA Collections in Excel

 

 

 

반응형
  Comments,     Trackbacks
엑셀 VBA #25 / For Each~Next_1 [VBA] - 시트숨기기
반응형

엑셀 VBA #25 / For Each~Next_1 [VBA] - 시트숨기기

For Each~Next문으로 시트 숨기기

Sub For_Each_Next로_시트_숨기기1()

Dim sh As Worksheet

For Each sh In ThisWorkbook.Worksheets
      If sh.Name = "메인" Then
      ElseIf sh.Name = "외우기" Then
      Else
            sh.Visible = False
      End If
Next

End Sub

 

 

For Each~Next문 & 동적배열로 시트 숨기기

Sub For_Each_Next_and_동적배열로_시트_숨기기()

Dim sh As Worksheet
Dim s()      '시트이름이 '메인''외우기'가 아닌 시트 이름을 각각 보관할 배열방..동적배열적용
Dim i As Long

For Each sh In ThisWorkbook.Worksheets
      If sh.Name = "메인" Then
      ElseIf sh.Name = "외우기" Then
      Else
            ReDim Preserve s(i)
            s(i) = sh.Name   '각각의 s방에 숨길 시트 이름 보관
            i = i + 1
      End If
Next

Sheets(s).Visible = False

End Sub

 

For Each~Next문에 동적배열을 같이 적용하면 속도가 향상된다.

vba#25.xlsm
0.02MB

 

 

https://www.youtube.com/watch?v=HIlFL8yniM4&list=PLfxvqpVCYZ8e0qlyc_FU46neoWjO7yTWj&index=25

 

 

반응형
  Comments,     Trackbacks
엑셀 VBA #08 / 셀 범위 선택하기_3 [VBA] - Union
반응형

엑셀 VBA #08 / 셀 범위 선택하기_3 [VBA]
 
목적 : Union을 활용하여 비연속적으로 떨어진 셀 범위 선택하기(합집합)

1. Union
구조 : Application.Union(범위1,범위2,,,,,,범위30)
          Application생략 가능
의미 : 비연속적으로 떨어진 셀 범위(최대 30개)를 합체

2. 사용
Application.Union(Columns("B"),Columns("D")).Select      또는
Union(Columns("B"),Columns("D")).Select


3. 심화

특정값(ex, 4 또는 6)을 제외한 셀을 선택하는 경우, Union활용

 

Dim c as Range
Dim r as Range

For Each c in Range("A1:A10")
    If c = 4 or c = 6 then
    Else                          'c의 값이 4 또는 6이 아니라면
           If r Is Nothing Then   ' r이라는 개체변수(r방)에 아무것도 없으면
               Set r =c                      'r방에 c값을 넣어주고
           Else                           'r방에 기존 값이 있으면
               Set r =Union(r,c)        ' r방에 기존 값과 c값을 합체한다
           End if
    End If
Next

If r is nothing = 0 then r.Select       '0=false, r방이 nothing이 아니라면(false), r을 선택해라

 

For Each~Next구문 이해도

 

vba#08.xlsm
0.02MB

 

https://www.youtube.com/watch?v=w3fWBhtPamA&t=15s

 

 

2023.12.13 - 엑셀 VBA #13 / 셀 범위 선택하기_8 [VBA] - Intersect

2023.12.14 - 엑셀 VBA #40 / 행 삭제_개선1 [VBA] - Union

2023.12.15 - 엑셀 VBA #50 / 중복데이터 처리_3 [VBA]

2023.12.16 - 엑셀 VBA #51 / 중복데이터 처리_4 [VBA] - 사용자정의함수

 

 

 

반응형
  Comments,     Trackbacks
최근 작성 글
최근 작성 댓글
최근 작성 트랙백
프로필
공지사항
글 보관함
캘린더
«   2025/01   »
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