[3주차]VBA 4주 완성
1. 열심히 공부한 흔적이 담긴 사진을 남겨주세요!
(위쪽 카메라 버튼을 클릭해서 이미지를 삽입할 수 있습니다)
- 이해하려고(영타도 느리다보니;;) 쓰면서 복습하고 있습니다;;
2. 이번 스터디에서 새롭게 알게되거나 유익했던 내용을 3가지로 요약해주세요!
- 기존강의 활용한 VBA 언어 : initRow, CurrentRange와 DynamicRange차이 등
- 함수시 Function으로 변환 : 함수인수로 간결 (아직 헤매고 있지만요 ㅠㅠ)
- 동적범위 활용 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
번호 | 제목 | 작성자 | 작성일 | 추천 | 조회 |
[📚진짜쓰는 실무엑셀] IT/오피스 '1위' 베스트셀러! 엑셀 공부, 이 교재로 마스터하세요! (315)
![]() ![]() |
![]() ![]() |
2022.02.03 | 575 | 609825 | |
78572 |
New 엑셀기초4시간 [챕터3]
![]() ![]() |
![]() ![]() |
2025.05.12 | - | 43 |
78552 |
New 엑셀 기초 4시간 완성, 원데이 챌린지 1일차
![]() |
![]() |
2025.05.12 | - | 26 |
78551 |
New 챕터1 스터디노트
![]() ![]() |
![]() ![]() |
2025.05.12 | - | 28 |
78539 |
New 엑셀기초, 4시간 총정리 [Chapter 3] 보고서 퀄리티 UP! 엑셀 자동화 대시보드 만들기
![]() ![]() |
![]() ![]() |
2025.05.10 | - | 34 |
78538 |
New 엑셀기초, 4시간 총정리 [Chapter 2] 엑셀에서 ‘데이터 관리’가 중요한 이유!
![]() ![]() |
![]() ![]() |
2025.05.10 | - | 27 |
78537 |
New 엑셀기초, 4시간 총정리 [Chapter 1] 엑셀 핵심 설정부터 주요 기능까지!
![]() ![]() |
![]() ![]() |
2025.05.10 | - | 35 |
78526 |
New 엑셀기초 4시간완성 1
![]() |
![]() |
2025.05.09 | - | 37 |
78476 |
엑셀 파워쿼리 기초 3
![]() ![]() ![]() |
![]() ![]() |
2025.05.04 | - | 60 |
78475 |
엑셀 파워쿼리 기초 2
![]() ![]() ![]() |
![]() ![]() |
2025.05.04 | - | 74 |
78474 |
엑셀 파워쿼리 기초 1
![]() ![]() ![]() |
![]() ![]() |
2025.05.04 | - | 54 |
78468 |
VBA DAY 1
![]() |
![]() |
2025.05.03 | - | 24 |
78465 |
엑셀 기초 4시간 총정리 Chapter 3
![]() ![]() ![]() |
![]() ![]() |
2025.05.03 | - | 38 |
78457 |
엑셀 기초 4시간 총정리 Chapter 2
![]() ![]() |
![]() ![]() |
2025.05.02 | - | 37 |
78456 |
엑셀 기초 4시간 총정리 Chapter 1
![]() ![]() |
![]() ![]() |
2025.05.02 | - | 44 |
78444 |
파워쿼리 숙제
![]() ![]() |
![]() |
2025.04.30 | - | 56 |
78426 |
VBA 4시간 4일차
![]() ![]() |
![]() ![]() |
2025.04.29 | - | 88 |
78425 |
VBA 4시간 3일차
![]() ![]() |
![]() ![]() |
2025.04.29 | - | 80 |
78423 |
VBA 4시간 2일차
![]() ![]() |
![]() ![]() |
2025.04.29 | - | 79 |
78417 |
VBA 4시간 1일차
![]() ![]() |
![]() ![]() |
2025.04.29 | - | 69 |
78383 |
엑셀기초 4시간 - 원데이 챌린지(3일차)
![]() ![]() ![]() |
![]() ![]() |
2025.04.27 | - | 87 |
@할미손 님 안녕하세요?
Filterval <-과 같은 변수 이름은 작성자 편의상 이해하기 편한 이름으로 작성하면 됩니다.
Range("A1").Value <- 이런 속성은 함수처럼 정해진 값들이기 때문에 Value로 꼭 맞춰줘야 하구요 🙂
감사합니다.
@오빠두엑셀 님 감사합니다!!^^