VBA Macro 45

[엑셀 VBA] 스파크라인 자동으로 삽입하기

지정한 범위에 대해 스파크라인을 자동으로 넣어주는 매크로이다. 그냥 스파크라인 편하게 넣어보려고 만들어봤다. 시간에 따른 추이를 보아야 하는 데이터가 있다면 유용할 것이다. 아래 예시는 최근 90일 간 FNGU ETF와 종속 주식의 흐름을 나타낸 것이다. 확실히 엔비디아(NVDA)의 최근 주가 흐름이 광기 수준이었다는 걸 알 수 있다. 매크로 Output VBA Code Option Explicit Sub sparkline() Dim oSht As Worksheet Dim totalRng As Range '선택영역을 담을 변수 Dim crng As Range '선택영역을 순환할 셀 변수 Set oSht = Sheets(1) '워크시트 초기화 Set totalRng = Selection '선택 영역을 초기..

VBA Macro/VBA Excel 2023.02.28

[엑셀VBA] 1차원 배열의 역배열(Reverse Array) 반환하기

1차원 배열의 역순으로 바뀐 배열을 반환하는 함수이다. Sub 모듈은 함수를 테스트하는 용도로 넣어본 모듈이다. Function 내용은 주석을 참고하면 된다. 매크로 Output(없음) VBA Code Option Explicit Sub test() '함수 테스트용 모듈 Dim x() As Variant Dim y() As Variant Dim i As Long x = Array(1, 2, 3, 4, 5) y = getReverseArr(x) For i = LBound(y) To UBound(y) Debug.Print y(i) '5, 4, 3, 2, 1 Next End Sub Public Function getReverseArr(src As Variant, Optional period As Long) A..

VBA Macro/VBA Excel 2022.11.05

[엑셀 VBA] 기준이 없는 리스트에 따라 자동필터하기

통상 필터는 어떠한 기준(조건)에 맞는 사례만 따로 보고자 할 때 쓴다. 이를테면, 수학 성적이 90점 이상인 학생, 성이 김씨인 학생, 안경을 쓴 학생 등을 구할 때 쓴다. 그런데 케이스마다 적용하는 기준이 다르다면? 혹은 없다면? 예를 들어, 수 천 명의 학생 데이터 중에서 특정 100 명만 리스트해야 한다면? 이 매크로는 전체 케이스 중 특정 목록에 속하는 데이터만 필터링하는 매크로이다. 매크로 예제로 사용한 데이터는 미국 주식 티커별 데이터이다. 특정 ETF에 포함된 상위15개 티커를 필터링한다. 참고로 예제 영상에서 모든 데이터가 필터링되지 않는 이유는 나에게 필요하지 않은 티커를 삭제했기 때문이다. 매크로 작동방식은 코드 내 주석을 확인하면 된다. 매크로 Output VBA Code Optio..

VBA Macro/VBA Excel 2022.10.09

[엑셀 VBA] 짤막하고 유용한 사용자정의 함수 및 스니핏

짤막하고 유용한 사용자정의 함수 스니핏 엑셀을 사용하면서 왠지 있을 것 같은데 없거나 지원되지 않는 기능이 있다. 따로 추가기능을 만들거나 프로그램을 짜려니 그정도 노력을 기울일 정도로 필요한 것도 아니고 또 그냥 노가다를 하기엔 성가신 경우가 있어서 필요한 기능을 사용자정의 함수로 만들어보았다. 앞으로 사용자정의 함수와 관련해서는 본 포스팅에서 계속 업데이트 할 예정이다. (2021. 2. 2.) 1) 여러 범위의 셀내용(문자열) 합치기 엑셀 함수 Concatenate와 유사한 함수라고 생각하면 된다. 기존 Concatenate 함수는 셀 하나씩만 인자로 받을 수 있었던 반면, 이 함수는 범위만 지정해주면 모든 셀값을 하나로 연결해준다. Function constr(ByRef cRng As Range)..

VBA Macro/VBA Excel 2021.02.02

[엑셀 VBA] 숫자데이터의 구간별 빈도 빠르게 산출하기

이 매크로는 숫자데이터들의 구간별 빈도를 빠르게 산출하는 매크로이다. 각종 통계 데이터의 분포를 빠르게 살펴보고 보고서로 작성할 때 유용한 매크로이다. 사용법은 간단하다. 1) 데이터의 범위를 지정하고, 2) 매크로를 실행한 다음, 3) 구간값을 띄어쓰기로 입력하면 된다. 3) 단계에 대한 부연을 하자면 다음과 같다. 가령 내가 가진 연령 데이터가 최소 15세부터 최대 67세까지 있다고 하자.(매크로를 실행하면 범위를 알려준다.) 이에 대해 1) 20세 미만, 2) 20세 이상 40세 미만, 3) 40세 이상 60세 미만, 4) 60세 이상 4개 구간으로 구분하여 빈도를 산출하고자 한다면. 입력창에 0 20 40 60 100(60보다 큰 수이면 된다.)을 입력하면 된다. 일단 코드만 먼저 제시하고 추후에..

VBA Macro/VBA Excel 2021.01.26

[엑셀 VBA] 가능한 모든 조합 나열하기 (응용하기)

S Y N O P S I S #모든 조합 뽑아내기2 구버전 에디터를 쓰다가 작성한 내용이 모두 날아갔다..(깊은 한숨..) 지난 포스팅(링크(새창))에 문의해주신 분에 대한 답으로 조합을 산출하는 매크로를 응용하는 코드를 작성해보았다. 문의내용의 요지는, 'n개의 집단 중에서 임의의 r개의 집단을 뽑는 nCr개의 조합을 산출하고, 각각의 조합에 대해 다시 하위요소들의 조합을 열거하는 것'이다. 예컨대, 4개의 집단(커피, 사이즈, 샷추가, 얼음추가) 중에서 2개의 집단을 뽑아내는 4C2개(6개)의 조합에 대해 모든 조합을 열거한다. 여기서 사용자가 임의로 변경해주어야 하는 부분은 2가지이다. 1) 전체 영역(여기서 n이 결정된다.), 2) 이 중에서 선정할 조합의 개수(여기서 r을 결정한다.) 참고로 조..

VBA Macro/VBA Excel 2021.01.25

[엑셀 VBA] 가능한 모든 조합 나열하기

개인적으로 필요해서 SPSS의 집단별 통계 기능을 엑셀로 만들고 있는 중이다. 이 매크로는 그 과정의 시작 단계라 할 수 있겠다. 집단별 변수값에 따라 만들 수 있는 모든 조합을 나열한다. 예를 들어, 성별 변수가 남/여, 지역 변수가 서울/수도권/비수도권으로 구분되어 있다면, 남-서울, 남-수도권, 남-비수도권, 여-서울, 여-수도권, 여-비수도권 항목을 모두 나열하는 기능이다. 사용방법: 1) 조합을 산출할 영역을 지정한다. 2) 매크로를 실행한다. 3) 끝 코딩은 공부하는 차원에서 컬렉션을 사용했는데, 그냥 배열변수를 써도 무방하다. 매크로 Output VBA Code Option Explicit Option Base 1 Sub every_case() Dim oCol() As New Collecti..

VBA Macro/VBA Excel 2020.05.18

[엑셀 VBA] 두 단어의 일치도(%) 산출 매크로 #2 (일반화된 방법)

S Y N O P S I S #두 단어의 일치도(%) 산출하기 기존 포스팅(링크)의 한계점을 보완한 매크로이다. 일치도 산출 매크로를 사용자정의 함수로 정의하고, 2개의 셀을 입력받아 일치도를 산출하도록 했다. 기존 포스팅과 마찬가지로 연속된 글자일 경우에만 산출한다. 작동방식: 아래 화면과 같이 단어목록1과 단어목록2를 순차적으로 비교하여 C열에 일치도를 산출한다. 매크로 Output VBA Code Option Explicit Sub max_common_text() Dim lastRow As Long Dim k As Long With ActiveSheet.UsedRange lastRow = .Row + .Rows.Count - 1 '마지막 행 번호 End With For k = 2 To lastRow..

VBA Macro/VBA Excel 2020.05.12

[파워포인트 VBA] 도형(Shape) 개체 다루기

파워포인트 VBA에서 도형 개체 다루기 이번 포스팅은 파워포인트 VBA를 통해 도형 개체를 다루는 방법이다. 파워포인트에서 다루어지는 대부분의 개체는 도형 개체(Shape Object)이다. 도형 개체에는 그림, 선, 표, 텍스트상자, 차트 등 수없이 많다. 도형 개체가 매우 다양하기 때문에 여기서는 표(Table Object)를 중심으로 설명한다. 이하의 설명은 표 이외의 모든 도형 개체에 적용될 수 있는 내용이다. 여기서 다루는 예제는 기본적으로 마이크로소프트 MSDN의 개체모델을 참고하였다. 파워포인트 개체모델 링크(새창) 해당 링크에서 원하는 Object를 찾으려면 좌측의 Filter by Title에서 Object를 검색하거나 직접 스크롤해서 Object를 찾으면 된다. 테이블 개체(Table ..

포토샵 피부보정(주파수분리 적절한 가우시안 블러값)

매크로 설명 주파수분리(Frequency Separation) 기법은 피부를 보정하는 다양한 방법 중 하나이다. 특히 거친 피부를 매끄럽게 하면서도 피부 자체의 디테일을 보존하는 데 탁월하다 주파수분리는 크게 두 단계다. 1) 원본사진의 톤과 디테일을 분리한다. (이 과정에서 약간의 가우시안 블러가 들어감) 2) 톤 영역에 대해서만 한 번 더 블러를 먹여서 피부를 보정한다. (여기서 한 번 더 가우시안 블러가 들어감) 이 과정이 꽤나 귀찮기 때문에 보통은 액션(Action)을 만들어두고 사용한다. 다만, '디테일 분리를 위해 적절한 가우시안 블러 사이즈가 얼마인가?'를 고민할 수 있다. 이 때문에 블러 사이즈를 고정시킨 액션을 실행하는게 찝찝하다. (그래서 매크로를 만들었다.) 본인의 경우 얼굴부분의 픽..