엑셀 20

[엑셀 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를 통해 개발한 파워포인트 추가기능이다. 거추장스러운 거 다 빼고 그냥 빈도만 세는 기능이다. 매번 Countif 함수로 빈도수를 확인하기 번거로웠던 사람이라면 꽤 유용할 것이라 생각한다. 설치 방법 1) 첨부파일의 압축 파일을 압축 해제한다. (아무 곳이듯 상관 없음) 2) setup.exe 파일을 (반드시)관리자 권한으로 실행한다. (마우스 오른쪽 클릭 -> 관리자 권한으로 실행) 3) 다음, 설치를 클릭하면 설치가 완료된다. 사용 방법 1) 빈도수를 산출할 영역 지정 2) 루아흐뉴마 추가기능 탭의 FastFrequency 단추 클릭 ※ 공백("")도 카운트한다. 빈도표에서 가볍게 삭제해주면 된다. ※ 수치 데이터에 대한 구간별 빈도 산출은 하지 않는다. 삭제하는 방법 1) ..

[파워포인트 VBA] 그림 크기 일괄 변경하기 (엑셀에서 제어)

매크로 설명 기존 포스팅에서 이와 유사한 매크로를 다루었지만, 사소하지만 꽤나 중대한 문제가 있었기에 리뉴얼해서 올린다. 사소하지만 꽤나 중대한 문제라 함은, 기존에 만든 매크로의 경우 파워포인트 프로그램에서 실행된다. 이 경우 해당 PPT 파일을 매크로가 사용가능한 .pptm으로 변경하고 코드를 복붙하고 실행해야 하는 번거로움이 있었다. 이를 해결하기 위해 엑셀을 통해 PPT 파일을 제어하도록 변경한 매크로이다. 정상적으로 작동하려면 PowerPoint Object Library 참조를 추가해주어야 한다. VBA 편집기 화면 -> 도구 -> 참조 -> Microsoft PowerPoint ##.# Object Library를 찾아서 체크 -> 확인 매크로 실행 동영상 VBA Code Option Exp..

엑셀 VBA 실제 사용 중인 영역의 경계 선택하기

S Y N O P S I S #VBA로 사용 중인 영역의 경계 선택하기 보통 사용 중인 영역을 Application.UsedRange로 설정하여 작업을 수행하게 되는데, 간혹 엑셀 시트를 만지다보면 데이터가 없는 영역인데도 불구하고 UsedRange가 선택하는 경우가 있다. 이 경우에는 셀 서식이 변경되었거나 변경 후 삭제를 했으나 저장을 하지 않은 경우 UsedRange로 인식할 수 있다. 이를 해결하기 위해 UsedRange가 아닌 실제 데이터 값만 들어 있는 UsingRange를 인식하도록 구현한 매크로이다. VBA Code Option Explicit Sub usingRng() Dim firstRow As Long Dim firstCol As Long Dim lastRow As Long Dim l..

VBA Macro/VBA Excel 2018.03.07

엑셀 VBA를 이용하여 포토샵 이미지 리사이즈 및 저장

매크로 설명 엑셀의 VBA 코드를 활용하여 포토샵 이미지를 리사이즈 하고 Export까지 수행하는 매크로이다. 인스타그램을 하다보니 최종편집 후 1080 사이즈의 이미지를 만드는 게 귀찮기도 하고, 포토샵의 액션 기능을 사용하는 경우 원본 Document의 사이즈에 따라 크기가 제멋대로 나와서 만들어 보았다. 가로 이미지와 세로 이미지를 인식하여 장축이 가로인 경우에는 가로가 1080이 되도록, 세로가 장축인 경우에는 세로가 1080이 되도록 리사이즈한다. VBA Code Option Explicit Sub resize_image() Dim appPhoto As Photoshop.Application Dim docPhoto As Photoshop.Document Dim imgSize As Double D..

[엑셀] 지정한 셀 크기에 맞게 사진 삽입하기

매크로 설명 셀 또는 셀 범위를 선택하여 해당 셀 크기에 맞게 사진을 삽입하는 매크로이다. 선택된 셀이 범위인 경우 해당 셀을 병합한 뒤에 삽입한다. 매크로를 사용하는 방법은 아래 동영상 참고 매크로 실행 동영상 VBA Code Sub insert_image() Dim selRng As Range Dim rngTop As Double Dim rngLeft As Double Dim rngHeight As Double Dim rngWidth As Double On Error Resume Next Set selRng = Application.InputBox(prompt:="셀 또는 범위를 선택하세요.", Type:=8) '셀 선택 If Err.Number > 0 Then Exit Sub '선택하지 않은 경우 ..

VBA Macro/VBA Excel 2018.03.06

[엑셀VBA] 강제 줄바꿈 셀 분리하기

매크로 설명 워크시트 데이터 중에서 강제 줄바꿈(Alt + Enter)이 들어간 셀을 나누는 매크로이다. 코드의 요점은 강제 줄바꿈이 있는 셀을 찾아서 줄바꿈을 카운트하고 해당 카운트만큼 셀을 삽입하는 방식이다. 필요에 의해 가볍게 쓰려고 만든 코드이다. 곧바로 가져다 쓰기에는 무리가 있을 수 있다. (알맞은 변형이 필요하다.) 매크로 실행 동영상 VBA Code Sub forced_enter_separation() Dim k As Integer, cnt As Integer Dim varSize As Integer Dim myColumn As String Dim lastRow As Integer With ActiveSheet.UsedRange lastRow = .Row + .Rows.Count '마지막 ..

VBA Macro/VBA Excel 2018.03.05

[엑셀] 워크시트의 오류값 리턴(CVErr 함수)

S Y N O P S I S #워크시트의 오류값 리턴하기 VBA 내장 오류코드가 아닌 엑셀 시트의 오류(#N/A 같은)를 반환한다. 오류를 예외로 처리하여 엑셀의 내장함수와 연동하는 경우 유용하다. VBA Code Option Explicit Dim myTop As Long Sub sht_Err() 'CVErr(xlErrDiv0) #DIV/0! 오류 반환 'CVErr(xlErrNA) #N/A 오류 반환 'CVErr(xlErrName) #NAME? 오류 반환 'CVErr(xlErrNull) #NULL! 오류 반환 'CVErr(xlErrNum) #NUM! 오류 반환 'CVErr(xlErrRef) #REF! 오류 반환 'CVErr(xlErrValue) #VALUE! 오류 반환 End Sub 매크로 실행 동영상..

VBA Macro/VBA Excel 2018.03.05

[엑셀] VBA로 스택 구현

S Y N O P S I S #VBA로 스택 구현하기 VBA로 구현한 스택이다. 별 건 없다. 필요할 때 가져다 쓰려고 만들어봤다. VBA Code Option Explicit Option Base 0 Const MAXI = 5 'stack 크기 설정 Dim myTop As Long Sub myStack() Dim myArr() As Variant myTop = -1 ReDim Preserve myArr(MAXI) 'stack 크기만큼 배열 초기화 Call push(myArr, "아이템 1") Call push(myArr, "아이템 2") Call pop(myArr) Call pop(myArr) End Sub Function push(ByRef fn_arr() As Variant, ByVal fn_ite..

VBA Macro/VBA Excel 2018.01.14

[엑셀] 글자 수 세기 (사용자 정의 함수)

# 특정 문자열에서 지정한 글자가 몇개 있는지 세어주는 매크로. # 사용자 정의 함수를 활용하여 엑셀 시트 내에서 함수처럼 쓸 수 있다. # 문자열이 있는 셀 주소를 참조할 수도 있고, 문자열을 직접 설정할 수도 있다. # 대소문자를 구분한다. VBA Code #1 Option Explicit Function cntChr(ByVal target As Variant, ByVal txt As Variant) Dim i As Long Dim cnt As Long Dim start As Long cnt = 0 start = 1 i = 1 Do If InStr(start, target, txt) > 0 Then '찾는 글자가 있으면(>0) cnt = cnt + 1 '카운트를 증가하고 start = InStr(st..

VBA Macro/VBA Excel 2018.01.11