[3주차]VBA 4주 완성

VBA 4주 완성
작성자
할미손
작성일
2022-07-23 18:33
조회
487

1. 열심히 공부한 흔적이 담긴 사진을 남겨주세요!
(위쪽 카메라 버튼을 클릭해서 이미지를 삽입할 수 있습니다)

  • 이해하려고(영타도 느리다보니;;) 쓰면서 복습하고 있습니다;;

 

2. 이번 스터디에서 새롭게 알게되거나 유익했던 내용을 3가지로 요약해주세요!

 

  1. 기존강의 활용한 VBA 언어 : initRow, CurrentRange와 DynamicRange차이 등
  2. 함수시 Function으로 변환 : 함수인수로 간결 (아직 헤매고 있지만요 ㅠㅠ)
  3. 동적범위 활용 Offset과 마지막셀 적용 End(xlup)

 

3. 이번 스터디를 진행하면서 특별히 좋았던 점이나 부족했던 점이 있다면 자유롭게 남겨주세요.

핕터의 값은 Filterval라고 하더라구요 다른값은 "~.value" 던데.. 특정 값의 언어들이 별도로 있는건가요??

 

 

 

4. 열심히 학습한 결과파일이나 스크린샷, 코드가 있다면 자유롭게 올려주세요.

ub SequenceNumber()
Dim column As String '시작열 @ 예) "A", "B", "C", ...
Dim Count As Long '출력할 순번 개수 @ 예) 5, 10,15 ...
Dim I As Long ' For문 변수

'힌트1) Column = "A"
'힌트2) Count = 10

column = "A"
Count = 10

 

'힌트3) For i = 1 To Count
'힌트4) Range(Column & i).Value
For I = 1 To Count
Range(column & I).Value = I
Next

 

End Sub

'-----------------------------------------
'미션2) 나만의 Sequence 매크로를 동적으로 만들기
'InitCell로 시작셀을 지정하고, Count로 출력할 순번 개수를 지정하면
'InitCell을 기준으로 한칸씩 내려가며 순번을 출력하는 매크로를 작성합니다.
'예상풀이시간 : 5분
'-----------------------------------------
Sub DynamicSequence()

Dim InitCell As Range '시작셀 @ 예) Range("A1")
Dim Count As Long '출력할 순번 개수 @ 예) 5, 10 15 ..
Dim I As Long 'For문 변수

'힌트1) Set InitCell = Range("A1")
'힌트2) Count = 10

Set InitCell = Range("C5")
Count = 10

For I = 1 To Count
InitCell.Offset(I - 1).Value = I

Next

End Sub

'-----------------------------------------
'미션3) 나만의 TextJoin 함수 만들기
'문자를 병합할 범위를 Rng로 입력하고, 구분자를 지정하면
'Rng의 각 셀을 돌아가며 구분자로 병합하는 함수를 작성합니다.
'예상풀이시간 : 7분
'-----------------------------------------
Function MyTextJoin(Rng As Range, _
Optional Delimiter As String = ",")
'@ 인수 설명
'Rng : 값을 병합할 범위입니다.
'Delimiter : [선택인수] 구분자입니다. 기본값은 쉼표(,)입니다.(뒤에만 쓸수있음)

Dim r As Range 'For Each문 변수
Dim Result As String '결과로 출력할 문자열

'힌트1) For Each r In Rng
'힌트2) If r.Value <> "" Then
'힌트3) Result = Result & r.Value & Delimiter

For Each r In Rng
If r.Value <> "" Then
Result = Result & r.Value & Delimiter
End If

Next

'힌트4) MyTextJoin = Left(○○○, Len(○○○) - 1)

MyTextJoin = Left(Result, Len(Result) - 1)

End Function
Sub ClearRange()

'DynamicRange(Sheet1, "G", 2).ClearContents
'DynamicRange(Sheet1, "H", 2).ClearContents

Dim I As Long

I = WS.Range(column & "1048576").End(xlUp).Row

If I > 1 Then

Sheet1 , Range("G2:H" & I).ClearContents

End If

End Sub

Function DynamicRange(WS As Worksheet, column As String, InitRow As Long) As Range

'Dim WS As Worksheet
'Dim column As String
Dim I As Long
Dim address As String
'Dim InitRow As Long

'Set WS = Sheet1
'set ws = Thifworkbook.worksheets("품목검색")
'column = "C"
I = WS.Range(column & "1048576").End(xlUp).Row
InitRow = 2

If I < InitRow Then I = InitRow
address = column & InitRow & "," & column & I

Set DynamicRange = WS.Range(address)

'MsgBox address

End Function

Sub Test()

MsgBox DynamicRange(Sheet1, "B", 2).address

End Sub
Sub FilterItems()

'GroupRng(구분)의 조건을 비교해서, 구분에 해당하는 제품과 가격을 표시

Dim GroupRng As Range ' 필터링 할 구분 범위 (동적으로 설정!)
Dim r As Range ' GroupRng를 For Each로 하나씩 참조할 셀
Dim FilterVal As String ' 비교할 조건
Dim I As Long ' r의 값이 조건과 같을 경우, 1씩 증가할 정수

Set GroupRng = DynamicRange(Sheet1, "A", 2) '동적으로 범위 받아오는 것

I = 2
FilterVal = Sheet1.Range("E2").Value

For Each r In GroupRng
If r.Value = FilterVal Then
Sheet1.Range("G" & I).Value = r.Offset(0, 1).Value
Sheet1.Range("H" & I).Value = r.Offset(0, 2).Value
I = I + 1
End If

Next

End Sub

 

 

 

3주차.jpg

신고
스크랩
공유
전체 2

  • 2022-07-23 18:59

    @할미손 님 안녕하세요?

    Filterval <-과 같은 변수 이름은 작성자 편의상 이해하기 편한 이름으로 작성하면 됩니다.

    Range("A1").Value <- 이런 속성은 함수처럼 정해진 값들이기 때문에 Value로 꼭 맞춰줘야 하구요 🙂

    감사합니다.


    • 2022-07-23 20:35

      @오빠두엑셀 님 감사합니다!!^^


전체 4,140
번호 제목 작성자 작성일 추천 조회
알림
[📚진짜쓰는 실무엑셀] IT/오피스 '1위' 베스트셀러! 엑셀 공부, 이 교재로 마스터하세요! (315)
오빠두엑셀 | 2022.02.03 | 추천 575 | 조회 609825
오빠두엑셀 2022.02.03 575 609825
78572
New 엑셀기초4시간 [챕터3]
itskimmin | 2025.05.12 | 추천 0 | 조회 43
itskimmin 2025.05.12 - 43
78552
New 엑셀 기초 4시간 완성, 원데이 챌린지 1일차
엑천괴 | 2025.05.12 | 추천 0 | 조회 26
엑천괴 2025.05.12 - 26
78551
New 챕터1 스터디노트
itskimmin | 2025.05.12 | 추천 0 | 조회 28
itskimmin 2025.05.12 - 28
78539
New 엑셀기초, 4시간 총정리 [Chapter 3] 보고서 퀄리티 UP! 엑셀 자동화 대시보드 만들기
catharine | 2025.05.10 | 추천 0 | 조회 34
catharine 2025.05.10 - 34
78538
New 엑셀기초, 4시간 총정리 [Chapter 2] 엑셀에서 ‘데이터 관리’가 중요한 이유!
catharine | 2025.05.10 | 추천 0 | 조회 27
catharine 2025.05.10 - 27
78537
New 엑셀기초, 4시간 총정리 [Chapter 1] 엑셀 핵심 설정부터 주요 기능까지!
catharine | 2025.05.10 | 추천 0 | 조회 35
catharine 2025.05.10 - 35
78526
New 엑셀기초 4시간완성 1
goo | 2025.05.09 | 추천 0 | 조회 37
goo 2025.05.09 - 37
78476
엑셀 파워쿼리 기초 3 첨부파일
하이마 | 2025.05.04 | 추천 0 | 조회 60
하이마 2025.05.04 - 60
78475
엑셀 파워쿼리 기초 2 첨부파일
하이마 | 2025.05.04 | 추천 0 | 조회 74
하이마 2025.05.04 - 74
78474
엑셀 파워쿼리 기초 1 첨부파일
하이마 | 2025.05.04 | 추천 0 | 조회 54
하이마 2025.05.04 - 54
78468
VBA DAY 1
계란김밥 | 2025.05.03 | 추천 0 | 조회 24
계란김밥 2025.05.03 - 24
78465
엑셀 기초 4시간 총정리 Chapter 3 첨부파일
하이마 | 2025.05.03 | 추천 0 | 조회 38
하이마 2025.05.03 - 38
78457
엑셀 기초 4시간 총정리 Chapter 2
하이마 | 2025.05.02 | 추천 0 | 조회 37
하이마 2025.05.02 - 37
78456
엑셀 기초 4시간 총정리 Chapter 1
하이마 | 2025.05.02 | 추천 0 | 조회 44
하이마 2025.05.02 - 44
78444
파워쿼리 숙제 첨부파일
수평선마음 | 2025.04.30 | 추천 0 | 조회 56
수평선마음 2025.04.30 - 56
78426
VBA 4시간 4일차
김현주 | 2025.04.29 | 추천 0 | 조회 88
김현주 2025.04.29 - 88
78425
VBA 4시간 3일차
김현주 | 2025.04.29 | 추천 0 | 조회 80
김현주 2025.04.29 - 80
78423
VBA 4시간 2일차
김현주 | 2025.04.29 | 추천 0 | 조회 79
김현주 2025.04.29 - 79
78417
VBA 4시간 1일차
김현주 | 2025.04.29 | 추천 0 | 조회 69
김현주 2025.04.29 - 69
78383
엑셀기초 4시간 - 원데이 챌린지(3일차) 첨부파일
doggi**** | 2025.04.27 | 추천 0 | 조회 87
doggi**** 2025.04.27 - 87