vba 23

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

[엑셀] 유사 단어의 일치도(%) 산출 매크로

S Y N O P S I S #유사한 단어의 일치도(%) 산출하기 유사한 단어의 일치도(%)를 산출한다. 구체적으로 두 단어 사이의 최대 연속 부분의 일치도를 산출하는 매크로이다. 예컨대 "기계자동차공학부"와 "자동차공학과"를 비교했을 때, (전자를 기준으로) 전체 8개 글자 중에서 5개 글자가 일치하므로 5/8 = 62.5%가 일치하는 셈이다. 연속된 글자일 경우에만 산출한다. 불연속 글자의 경우는 일부 코드의 수정이 필요하다. 예시는 전문대학 공학계열 학과 리스트 중에서 찾는 단어(GoalText)의 일치도를 산출한다. 예시 영상에서 100% 일치인데 40%로 나오는 건 괄호와 숫자가 있기 때문. VBA Code Option Explicit Sub max_common_text() Dim lastRow..

VBA Macro/VBA Excel 2018.01.13

[엑셀] 같은 내용인 경우에 셀 병합하는 매크로

매크로 설명 특정 열에서 같은 내용이 반복적으로 나타나는 경우 해당 셀들을 병합하는 매크로이다. 데이터 활용에 있어서 셀 병합을 선호하지 않지만, 정리를 위해서 가끔식 필요한 매크로이다. 대략적으로 만들어서 빈 셀 처리 등은 문제가 발생할 수 있다. (매크로를 실행하기 전 시트를 백업해두자.) 사용 조건: 예시 동영상과 같이 빈 셀이 없어야 한다. 빈 셀이 없도록 데이터를 예쁘게 만져놓아야 한다. 매크로 실행 동영상 VBA Code Option Explicit Sub mergeCells() Dim i As Long Dim marker As Long Dim lastRow As Long Dim mergeCol As Long Application.DisplayAlerts = False '병합시 발생하는 대화창..

VBA Macro/VBA Excel 2017.12.19

파워포인트에 사용된 이미지 일괄 저장 매크로

매크로 설명 파워포인트 슬라이드에 있는 그림들을 일괄적으로 저장하는 코드를 응용. 파워포인트에 사용된 모든 이미지를 특정 폴더 안에 그 폴더 이름으로 저장하는 매크로이다. 매크로 실행 동영상 VBA Code Option Explicit Sub picSaveAs() Dim i As Long, cnt As Long Dim savePath As String, folderName As String Dim pic As Shape Dim targetFormat As String targetFormat = ".PNG" '그림을 저장할 형식은 PNG With Application.FileDialog(msoFileDialogFolderPicker) .Show If .SelectedItems.Count = 0 Then '..

[엑셀] 빈행을 동일하게 채우기 매크로

## 첫 번째 시트 "A"열의 빈셀 또는 빈셀이 있는 행을 윗머리 행과 같은 내용으로 채우는 매크로## 데이터를 다루다보면 빈 행은 껄끄러운 존재다. 특히 필터를 거는 경우에는 더더욱 그렇다.## 회사 일을 하면서 가장 많이 쓰는 매크로 중 하나이다. VBA Code Option Explicit Sub duplicate_headrow() Dim myItem Dim mySheet As Worksheet Dim i As Long, lastNum As Long Dim myCol As String Set mySheet = Sheets(1) '대상시트 설정(첫 번째 시트) myCol = "A" '빈행을 채울 열 번호(A열) With mySheet.UsedRange lastNum = .Row + .Rows.Coun..

VBA Macro/VBA Excel 2017.11.16

[엑셀] 빈 행, 빈셀 삭제하기 매크로

매크로 설명 첫 번째 시트 "A"열의 빈셀 또는 빈셀이 있는 행 전체를 삭제하는 매크로 이 방법 외에도 SpecialCells 메서드로 빈행을 찾아서 없앨 수 있다. (방법은 많다.) 많은 데이터가 아니거나 손이 많이 가지 않는다면, 자동필터를 이용해서 빈 필드는 제외하고 따로 복사하는 방법을 추천한다. VBA Code 예시 Option Explicit Sub empt_row_del() Dim i As Long Dim lastRow As Long Dim targetCol As String Dim mySheet As Worksheet Set mySheet = Sheets(1) 'mySheet를 첫 번째 시트로 설정, 다른 시트가 필요하다면 변경 With mySheet.UsedRange lastRow = ...

VBA Macro/VBA Excel 2017.11.14

[엑셀] 메모장 데이터 불러오기 매크로

메모장의 데이터를 Line by Line으로 변수에 넣는 매크로.이 경우 엑셀파일과 메모장 파일이 같은 폴더 내에 있어야 한다.다른 경우에는 참조할 수 있도록 myPath를 지정해주어야 하고. VBA Code Option Base 1 Option Explicit Dim textLine As String Dim myText() As Variant Dim myPath As String, fileName As String Dim file_number As Long, cnt As Long Sub xml_() myPath = ThisWorkbook.Path & "\" 'myPath 변수에 현재 엑셀파일의 위치 및 역슬래시 입력 fileName = "HRD_API.txt" file_number = FreeFile ..

VBA Macro/VBA Excel 2017.11.07

[엑셀/파워포인트] 지식의 보고, VBA 도움말 및 가이드 (파일)

## VBA2010 Guide VBA에 관한 매뉴얼이다. 게다가 한글화되어 있다. 상수, 날짜 형식, 지시문, 이벤트, 함수, 그룹, 키워드, 메서드, 개체, 연산자, 속성, 문 필요한 VBA 지식의 '운'을 띄울 수 있는 가장 강력한 교재라고 생각한다. ## Excel/PowerPoint 2013 Developer Documentation 엑셀과 파워포인트 2013의 개체모델, 간략한 코드 예제를 제공한다. 별도의 강의서적이 필요없을 정도로 풍부하다. (MS가 설치된 환경이라면 chm 파일을 검색하는 것만으로도 쉽게 구할 수 있다.) 정보제공 차원에서.. VBA Guide.chm 실행 화면

VBA Macro/VBA Excel 2017.10.27

[엑셀] 자주 사용하는/유용한 VBA 코드 정리

## 자주 사용하는 VBA 코드 정리 VBA Code Sub useful_code() last_cell_num = Sheets("Sheet1").Cells(Rows.Count, "A").End(xlUp).Row '마지막 셀의 행번호 찾기 'A 열 중간에 행이 비어 있어도 가장 마지막 행번호를 찾는다. '워크시트의 A 열 가장 아래쪽 끝에서 Ctrl + ↑를 한 것과 동일하다. Set myRng = Sheets("Sheet1").Cells(1,"A").CurrentRegion 'myRng를 A1 셀과 인접한 비어있지 않은 모든 셀의 Range 객체로 반환한다. 'A1 셀에서 Ctrl + A를 실행한 것과 동일하다. Dim OneArray(10) Dim MyArray(1 To 10, 5 To 15, 10 T..

VBA Macro 2017.10.27

[엑셀] 웹 페이지 크롤링/스크래퍼 매크로

## 웹 페이지 크롤링(실험)회사 업무중에 웹 페이지를 크롤링 해야 할 일이 생겨서 찾아보던 중자바나 다른 언어는 할 줄 모르기 때문에 현재 내가 할 수 있는 가장 쉬운 방식을 찾았다.구글 스프레드시트 importxml 함수를 통힌 파싱도 쉬워(노가다)보이는데 웹페이지에 따라서 제약이 좀 있는 듯하다. ※ "동일한 형식의 데이터를 보여줄 동일한 웹페이지를 URL 형식으로 모두 인덱싱 할 수 있어야 한다."는 점이 중요해 보인다.무슨 소리나면, 요새 웹페이지들이 http://도메인 이후 파라미터를 숨겨놓은 데가 많은데,그래서 페이지 인덱스가 바뀌어도 URL은 그대로라서 URL by URL 방식의 크롤링이 (마치 안되는 것처럼) 보인다.그런데 거꾸로, 페이지 인덱스만 찾아준다면 아래의 VBA 코드를 이용해서..

VBA Macro/VBA Excel 2017.10.21