엑셀VBA 35

[엑셀 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] 기준이 없는 리스트에 따라 자동필터하기

통상 필터는 어떠한 기준(조건)에 맞는 사례만 따로 보고자 할 때 쓴다. 이를테면, 수학 성적이 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] 가능한 모든 조합 나열하기

개인적으로 필요해서 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

[엑셀 추가기능 배포] 워크시트별로 분할 저장하기

추가기능 사용방법 VSTO를 통해 개발한 엑셀 추가기능이다. 많은 워크시트를 별도 엑셀파일로 저장하고 싶을 때 사용하면 좋은 기능이다. 현재는 엑셀파일 내의 모든 워크시트를 xlsx 포맷으로 저장한다. 매크로사용 통합문서(.xlsm)파일을 저장하는 경우에도 xlsx 포맷으로 저장한다. 추후 저장형식을 사용자가 임의로 지정할 수 있도록 보완할 계획이다. ※ 참고로 특별한 일이 있지 않는 한 C#으로 개발한 코드를 제공할 예정이다. ※ VBA로 추가기능을 개발하면서 혼란스러운 부분이 있어 코딩 언어를 C#으로 변경했다. 설치 방법 1) 첨부파일의 압축 파일을 압축 해제한다. (아무 곳이듯 상관 없음) 2) setup.exe 파일을 (반드시)관리자 권한으로 실행한다. (마우스 오른쪽 클릭 -> 관리자 권한으로..

[파워포인트 VBA] 전체 슬라이드 글씨 색깔 바꾸기

매크로 설명 파워포인트 각 슬라이드의 텍스트 서식 중에서 색깔을 일괄적으로 변경하는 매크로이다. 파워포인트 슬라이드가 많아질수록 직접 변경하기 번거로울 때 사용하면 좋다. 변경되는 Shape는 텍스트를 가진 텍스트박스, 도형, 표의 모든 텍스트이다. 파워포인트가 실행되어 있어야 하고, 코드는 엑셀에 작성하여 제어하는 방식이다. 엑셀 개발자도구에서 PowerPoint Object Library를 참조해주어야 한다. ※ 차트의 글씨 색깔은 변경하지 않는다. (참고) 적용 결과 매크로 실행 동영상 VBA Code Option Explicit Sub c_changer() Dim pptRef As PowerPoint.Application Dim sld As PowerPoint.Slide Dim shp As Pow..

[엑셀 VBA] 셀 내용 보존하면서 셀 병합하기

매크로 실행 동영상 여러 셀을 병합하면 첫 셀을 제외한 나머지 셀은 내용을 잃는다. 이 매크로는 병합 대상 셀의 모든 내용을 보존하면서 병합을 수행하는 매크로이다. 코드를 응용하면 조건에 따라 반복적인 보존병합을 수행할 수 있다. 꽤나 다양하게 응용 가능하다. VBA Code 예시 Option Explicit Sub merge_maintain_content() Dim targetR As Range '병합 범위 Dim mergeStr As String '병합 내용 변소 Dim eachR As Range '셀 순환용 객체 Application.DisplayAlerts = False '병합시 대화창 Off Set targetR = Application.InputBox("병합할 범위를 선택하세요", Type:=..

VBA Macro/VBA Excel 2018.07.28

사진 속 중간회색 찾기(화이트밸런스 맞추기) 매크로

화이트 밸런스를 눈대중으로 맞추기 어려운 경우에 가끔 사용하려고 제작했다. 사진의 각 픽셀을 건너뛰면서 컬러 샘플링을 하고, 지정한 검출 한계(변수: thr)만큼의 회색인 경우 샘플러를 찍어두는 로직이다. 사진 크기가 클수록 검출하는 데 오래걸리기 때문에 건너뛰는 픽셀(변수: stepPx)수를 조금씩 변경하면서 찾는 편이 빠르다. 중간회색을 찾은 이후에는 Curve 툴로 회색지점(또는 회색이 되어야 하는 지점)을 찍어주어 화이트밸런스를 맞출 수 있다. VBA Code Option Explicit Sub auto_gray_finding() Dim appRef As Photoshop.Application Dim docRef As Document Dim lyrRef As ArtLayer Dim lyrs As ..

엑셀에서 특정 문자로 나열된 셀 내용을 새로운 행을 추가하여 구분하기

매크로 설명 지난 번 포스팅을 약간 수정하여 보다 보편화된 상황에서 사용할 수 있도록 만든 매크로이다. (http://ruahneuma.tistory.com/57 "강제 줄바꿈 셀 분리하기") 특정 구분자(예, 콤마, 띄어쓰기, 콜론 등)로 나열된 셀 내용을 행을 추가하여 별도로 분리하는 매크로이다. targetChr 변수에 원하는 구분자를 입력하여 쉽게 분리할 수 있다. VBA Code Sub forced_enter_separation() Dim k As Integer, cnt As Integer Dim varSize As Integer Dim lastRow As Integer Dim myColumn As String Dim targetChr As String With ActiveSheet.UsedRa..

VBA Macro/VBA Excel 2018.03.09