[3주차] 엑셀 VBA 4주완성, 특별 스터디 3강 / 미션 제출 엑셀파일
VBA 4주 완성
작성자
송승민 All is well
작성일
2022-07-18 22:59
조회
34
1. 열심히 공부한 흔적이 담긴 사진을 남겨주세요!
(위쪽 카메라 버튼을 클릭해서 이미지를 삽입할 수 있습니다)
2. 이번 스터디에서 새롭게 알게되거나 유익했던 내용을 3가지로 요약해주세요!
- 범위 마지막 셀 찾는 메크로 사용방법
- slecttion change 와 chage의 차이점
- 범위 초기화 메크로 사용하는 방법
3. 이번 스터디를 진행하면서 특별히 좋았던 점이나 부족했던 점이 있다면 자유롭게 남겨주세요.
개인적으로 필요한부분은
- 스터디 그룹을 만들어주면 좋겠다(필수아닌, 선택으로)
- 그게 안된다면 보충학습 시간으로 배운내용에 대해서 직접 실시간 실습할 수 있으면 좋겠다. (유료도 참가의사 있음).
- 예복습 할 수 있으면 좋겠지만 강의시간만 들어도 완벽하게 할 수 있게 만들어 주면 좋겠다.
4. 열심히 학습한 결과파일이나 스크린샷, 코드가 있다면 자유롭게 올려주세요.
'----------------------------------------- '미션1) 나만의 Sequence 매크로 만들기 'Column로 시작열을 지정하고, Count로 순번 개수를 지정하면 '시작열의 1행부터 순번을 출력하는 매크로를 작성합니다. '예상풀이시간 : 3분 '----------------------------------------- Sub 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 = 20 '힌트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 '힌트3) For i = 1 To Count '힌트4) InitCell.Offset(i-1).Value 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() Dim i As Long i = Sheet1.Range("G1048576").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 = thisworkbook.workshees("품목검색") 'Column = "b" i = WS.Range(Column & "1048576").End(xlUp).Row If i < Initrow Then i = Initrow 'Initrow = 2 address = Column & Initrow & ":" & Column & i 'MsgBox address Set dynamicrange = WS.Range(address) End Function Sub test() MsgBox dynamicrange(Sheet1, "c", 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) FilterVal = Sheet1.Range("E2").Value i = 2 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 Sub UniqueList() Dim Rng As Range '고유값을 추출할 범위 Dim r As Range 'Rng 를 For Each로 하나씩 참조할 셀 Dim Items As Collection '고유값을 추가할 Collection Dim item As Variant 'Collection을 For Each로 하나씩 참조할 값 Dim itemList As String '고유값을 나열한 목록 End Sub Private Sub Worksheet_Change(ByVal Target As Range) Application.ScreenUpdating = False Application.EnableEvents = False If Not Intersect(Target, Range("E2")) Is Nothing Then '실행할 명령문 clearrange FilterItems End If Application.ScreenUpdating = True Application.EnableEvents = True End Sub Private Sub Worksheet_SelectionChange(ByVal Target As Range) End Sub
전체 0
댓글을 남기려면 로그인하세요.
전체 1,208
번호 | 카테고리 | 제목 | 작성자 | 작성일 | 추천 | 조회 |
[🏆 VBA 4주 완성 특별 스터디] 1기 - 우수 졸업생 및 후기, 축하합니다! (5)
![]() ![]() |
![]() ![]() |
2022.07.31 | 7 | 842 | ||
40636 | VBA 4주 완성 |
4주차 VBA강의 노트
![]() ![]() ![]() ![]() |
![]() ![]() |
2022.07.30 | - | 109 |
40631 | VBA 4주 완성 |
[4주차]VBA 4주 학습
![]() ![]() ![]() |
![]() ![]() |
2022.07.30 | - | 32 |
40630 | VBA 4주 완성 |
[3주차]VBA 4주 교육
![]() ![]() ![]() |
![]() ![]() |
2022.07.30 | - | 25 |
40627 | VBA 4주 완성 |
[2주차]VBA 4주 완성 학습
![]() ![]() ![]() |
![]() ![]() |
2022.07.30 | - | 20 |
40622 | VBA 4주 완성 |
[4주차] VBA 4주차 스터디 노트
![]() ![]() ![]() ![]() |
![]() ![]() |
2022.07.30 | - | 26 |
40621 | VBA 4주 완성 |
[4주차]엑셀 VBA 4주완성
![]() ![]() ![]() ![]() |
![]() ![]() |
2022.07.30 | - | 15 |
40618 | VBA 4주 완성 |
[4주차] 스터디 노트, 미션
![]() ![]() ![]() |
![]() ![]() |
2022.07.30 | - | 23 |
40616 | VBA 4주 완성 |
[4주차] VBA 4주 완성 특별스터디 4강
![]() ![]() ![]() ![]() |
![]() ![]() |
2022.07.30 | - | 27 |
40615 | VBA 4주 완성 |
[3주차] VBA 4주 완성 특별스터디 3강
![]() ![]() ![]() ![]() |
![]() ![]() |
2022.07.30 | - | 13 |
40614 | VBA 4주 완성 |
[2주차] VBA 4주 완성 특별스터디 2강
![]() ![]() ![]() ![]() |
![]() ![]() |
2022.07.30 | - | 19 |
40612 | VBA 4주 완성 |
[1주차] VBA 4주 완성 특별스터디 1강
![]() ![]() ![]() |
![]() ![]() |
2022.07.30 | - | 39 |
40609 | VBA 4주 완성 |
[4주차] VBA 4주 완성 스터디노트
![]() ![]() ![]() |
![]() ![]() |
2022.07.30 | - | 20 |
40607 | VBA 4주 완성 |
[4주차] 스터디
![]() ![]() ![]() |
![]() ![]() |
2022.07.30 | - | 19 |
40596 | VBA 4주 완성 |
[3주차] 스터디 및 미션
![]() ![]() |
![]() |
2022.07.29 | - | 17 |
40595 | VBA 4주 완성 |
[3주차] VBA 4주 완성
![]() ![]() |
![]() |
2022.07.29 | - | 15 |
40592 | VBA 4주 완성 |
[4주차] VBA 4주 완성
![]() ![]() ![]() |
![]() ![]() |
2022.07.29 | - | 16 |
40591 | VBA 4주 완성 |
[2주차] 스터디 및 미션
![]() ![]() |
![]() |
2022.07.29 | - | 22 |
40589 | VBA 4주 완성 |
콜렉션및 배열등
![]() ![]() ![]() ![]() |
![]() ![]() |
2022.07.29 | - | 19 |
40588 | VBA 4주 완성 |
[3주차] VBA 4주 완성 노트 및 과제
![]() ![]() ![]() |
![]() |
2022.07.29 | - | 18 |
40586 | VBA 4주 완성 |
[4주차]VBA 4주 완성
![]() ![]() ![]() ![]() |
![]() ![]() |
2022.07.29 | - | 19 |