전체 글 99

[엑셀 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