VB(A)
-
[& Chronicle] 지정기간의 합 구하기VB(A)/당근쨈 & Chronicle 2019. 2. 22. 18:56
https://cafe.naver.com/excelmaster/160457에 올라온 질문입니다. 워크시트 함수인 EoMonth 함수를 사용하여3개월 전의 첫날, 1개월 전의 마지막날을 구하여 그 사이에 있는 기간의 출고수량을 구하면 됩니다. Chronicle님은 아래와 같이 풀었습니다.https://blog.naver.com/asaph16/221472345497풀이 과정은 같지만 이런 건 함수가 훨씬 간단하네요. Option Base 1Option Explicit Sub Macro() Dim vAll, vDate Dim i As Integer Dim LastInput As Date Dim StartDay As Date Dim LastDay As Date Dim SumOutput As Long Dim wk..
-
표 변환하기(셀삽입)VB(A) 2019. 2. 18. 19:43
https://cafe.naver.com/excelmaster/160211의 질문입니다. 왼쪽 표를 오른쪽 표로 변환하는데F는 각 목록별로 값을 가지고 있어서 셀을 삽입하는 것이 까다로웠습니다.결국 순환문을 몇 번을 써서 해결했네요.로직을 짜는 것이 모든 코딩의 어려운 점인 것 같습니다. 조금 더 고급진 코딩을 하고 싶은데벽에 부딪힌 거 같네요. Option ExplicitOption Base 1Sub Macro() Dim FirstTable As Range Dim SecondTable As Range Dim SingleRange As Range Dim i As Integer Dim ToF As String Application.ScreenUpdating = False Set FirstTable = Ra..
-
[& Chronicle] 정규식으로 특수문자 제외하고 문자와 숫자만 분리하기VB(A)/당근쨈 & Chronicle 2019. 2. 15. 17:07
https://cafe.naver.com/excelmaster/160106에 올라온 질문입니다. ◁SOFT CREAM 120[G] 라는 텍스트가 있으면특수문자를 제외하여 SOFT CREAM 120G 라는 결과물을 원하는 내용입니다.정규식에서 Replace를 이용하여 영어, 숫자, 띄어쓰기만 제외하고 나머지는 없애는 코드를 짜면 됩니다. Chronicle 님은 아래와 같이 풀었습니다.텍스트를 워드에 복사해서 찾아 바꾸기를 하는 과정인데워드에서도 정규식이 적용되는지도 몰랐습니다.https://blog.naver.com/asaph16/221466733776 Function GetText(tmp As String) As String With CreateObject("Vbscript.regexp") .Global..
-
[& Chronicle] 경우의 수 구하기VB(A)/당근쨈 & Chronicle 2019. 2. 13. 21:07
https://kin.naver.com/qna/detail.nhn?d1id=1&dirId=102020101&docId=321105342에 올라온 질문입니다.5개의 경우이므로 순환문을 다섯개로 하드하게 했습니다. Chronicle 님은 함수 한 줄로 멋지게 해결했습니다.함수의 세계는 알면 알 수록 무궁무진한 것 같습니다.https://blog.naver.com/asaph16/221465069552 Option Base 1Sub Macro() Dim a As Integer Dim b As Integer Dim c As Integer Dim d As Integer Dim e As Integer Dim v(2) As String Dim tmp(5) As String Dim r As Integer r = 1 v(..
-
[& Chronicle] 연속근무 일수 구하기VB(A)/당근쨈 & Chronicle 2019. 2. 13. 11:14
https://cafe.naver.com/excelmaster/159887 에 올라온 질문입니다.한달동안 연속근무 7일 이상이 되는 사람은 '7일 연속근무' 셀에 '연속근무' 라는 표시를 해야합니다. Chronicle 님은 배열수식으로 해결했습니다.이런 게 함수로 되는지도 몰랐네요. 함수는 알면 알 수록 신기합니다.- https://blog.naver.com/asaph16/221464697666 아래는 매크로로 풀어낸 과정입니다. 1. A라는 사람부터 S라는 사람까지 크게 순환을 하고 2. 사람별로 1일부터 30일까지 다시 순환을 하면서 3. 근무를 하면 1씩 더하고 휴무일 땐 0으로 되돌려서 4. 합이 7이 되면 7일간 연속근무를 한 것이므로 '연속근무' 라는 표시를 하고 다음 행으로 넘어갑니다. Fo..
-
명단 출석 체크 추출 및 참가자 명단 파악VB(A) 2019. 1. 24. 10:49
https://cafe.naver.com/excelmaster/159162에 올라온 질문입니다.왼쪽의 표에 있는 명단을 가지고각 사람이 출석한 횟수, 1번이라도 출석한 사람 현황 파악하는 것이 질문의 요지입니다. 사실, 이런 표구성으로는 어떤 통계든 뽑아내기가 힘들기에처음부터 표구성을 잘 하는 것이 관건이기도 합니다. 파워쿼리를 이용하면 금방 끝나는 작업이며이번에는 매크로로는 모든 명단을 한 줄로 정렬하여 피벗으로 해결하였습니다. Sub Macro() Dim i As Integer Columns("H:K").Clear '기존 자료 삭제 Range("H1") = "취합" 'H1열에 제목 삽입 With Range("A1").CurrentRegion '모든 명단을 한 줄로 세우는 작업 For i = 1 To ..
-
표 내용을 띄엄띄엄 복사VB(A) 2019. 1. 18. 13:03
이번 내용은 https://cafe.naver.com/excelmaster/158961 에 올라온 질문입니다.1번과 같은 표가 있고2번의 양식으로 출력하고자 하는 질문입니다.옛날 부산소방학교에서 근무할 때 교육생 명단을 가지고 명찰을 만들던 것과 같은 양상이군요.(사실 VBA를 공부하게 된 계기도 교육생 명찰을 만들기 위함이었지요) 풀이 과정은 다음과 같습니다.1번 표의 A열의 제목을 순환하여2번 양식에 붙여넣습니다.(간단?) 주의할 점은홀수 제목은 왼쪽에 짝수 제목은 오른쪽에 있으니Column에 해당하는 변수를 왔다갔다만 잘 해주면 됩니다. Option Explicit Sub Macro() Dim r As Integer Dim c As Integer Dim SingleRange As Range Dim ..
-
데이터를 셀별로 나누기VB(A) 2019. 1. 17. 21:51
https://kin.naver.com/qna/detail.nhn?d1id=1&dirId=102020101&docId=319076651 에 올라온 질문입니다.왼쪽의 표를 오른쪽 표처럼 바꾸고자 하는 질문입니다.파워쿼리 또는 매크로를 이용하면 쉽게 해결할 수 있습니다. 코드 작성 흐름입니다. 1. B열을 순환하면서 2. , 를 기준으로 나누어 임의의 배열에 삽입합니다. 3. 삽입된 배열을 다시 순환하면서 D, E열에 출력합니다.자세한 코드와 파일은 아래에 있습니다. Sub Macro() Dim SingleRange As Range Dim tmp As Variant Dim i As Integer Dim j As Integer '기존 자료를 삭제합니다. Range("D1").CurrentRegion.Clear..
-
[추가기능] 주소변환(지번주소, 도로명주소, 우편번호)VB(A) 2018. 6. 22. 15:11
[추가기능] 첨부를 클릭하면 추가기능이 생성되어 추가기능의 버튼을 누르면 지번주소, 도로명주소, 관할 주민센터, 우편번호를 추출해주는 매크로 http://cafe.naver.com/excelmaster/152667 참고 Option Explicit Option Base 1 Sub Macro() Dim AddressRange As Range Dim v Dim addv(), v1 As String Dim r As Integer Dim i As Integer Dim j As Integer Dim sT As Date: sT = Time '시작시간 Dim nT As Date Dim oT As Date '속도 향상 With Application .Calculation = xlCalculationManual .Ena..
-
[정규식] 숫자를 한글로 변환VB(A) 2018. 2. 23. 20:30
위와 같이 숫자를 한글로 바꿔주는 사용자 정의 함수.정규식을 이용하여 숫자만 추출한 뒤 한글로 변환하였다.두가지 버전의 함수가 있고 개인적으로는 두번째 함수가 마음에 드는 편.정규식의 replace 를 이용해 한번에 바꾸고 싶었는데, 구글링을 통해서도 그런 방법은 찾지 못해 결국 순환문을 사용 Option ExplicitFunction ConvertKorean(tmp As String) As String With CreateObject("vbscript.regexp") .Global = False .Pattern = "(\d+)" Do If .test(tmp) = False Then Exit Do tmp = .Replace(tmp, Application.Evaluate("numberstring(" & ...
-
도로명주소 가져오기VB(A) 2018. 2. 13. 15:19
주소가 중구난방이거나 정식 도로명주소 등이 필요할 때 유용한 함수를 만들었다.juso.go.kr에서 파싱해오는 방식임 Option ExplicitFunction ConvertAddress(MyText As String, Optional WhichAddress As Integer) As String 'Dim oHtml As New HTMLDocument Dim oHtml As Object Dim myURL As String, postData As String Dim winHttpReq As Object Dim tmp As String myURL = "http://www.juso.go.kr/support/AddressMainSearch.do?searchType=TOTAL" '주소 변환 사이트 'postDat..
-
여러 시트를 쉽게 이동하기VB(A) 2018. 1. 5. 13:13
100개의 시트가 있을 때 이를 쉽게 이동할 수 있는 트리형 매크로추가기능을 활용하여 어느 시트에 있든 매크로를 쉽게 실행할 수 있다.아래 코드는 노드를 추가하는 내용 Private Sub CreateNodes() Dim i As Integer Dim j As Integer Dim c As Integer For i = 1 To 100 Step 10 TreeView1.Nodes.Add Key:=Sheets(i).Name, Text:=Sheets(i).Name & " ~ " & Sheets(i + 9).Name For j = 1 To 10 TreeView1.Nodes.Add Sheets(i).Name, relationship:=tvwChild, Text:=Sheets(j + c).Name Next j c =..
-
[정규식] 텍스트 파일을 조건에 맞게 쪼개서 가져오기VB(A) 2017. 12. 31. 23:26
http://cafe.naver.com/excelmaster/146535 띄어쓰기 없이 한줄로 나열된 텍스트를 조건에 맞게 쪼개서 가져오는 패턴코드도 쓸데없이 많이 쪼갠 탓인지 길어졌군.매크로 파일과 텍스트 파일을 한 폴더에 두고 실행하면 됨 Option Explicit Private Final() As VariantPrivate r As IntegerPrivate c As IntegerSub Macro() Dim v() As String Dim MyTxtFile As String '텍스트 파일 불러오기 Range("A1").CurrentRegion.Offset(1).ClearContents MyTxtFile = ThisWorkbook.Path & "\text.txt" v = OpenTxtFile(MyT..
-
웹페이지 파싱VB(A) 2017. 9. 23. 12:37
정규식 패턴 짜는 게 재미져서 그걸로 파싱하려다가카페에서 항상 도움받는 C*******e님의 추천으로 HTML에서 바로 자료 가져오는 걸로 노선을 수정.클래스네임으로 가져오는 거라 일도 아님.웹파싱은 서버에 무리를 줄 수 있어서 URL은 일부만.제품명, 스펙, 가격을 가져오는 코드이다. Option ExplicitOption Base 1 Sub Macro() Dim oHtml As New HTMLDocument '도구 - 참조 - Microsoft HTML Object Library 체크 Dim oElement As Object Dim URL As String Dim ClassName(3) As String Dim i As Integer, j As Integer Dim v() As String URL =..
-
[월보용] 데이터 합치기VB(A) 2017. 9. 1. 16:20
소방서별 데이터 합치기 코드추가기능으로 만들었음.나중에 쓸라고. Option Explicit Sub Macro() Dim OldBook As Workbook Dim NewBook As Workbook Dim SingleSheet As Worksheet Dim fd As FileDialog Dim FileChosen%, i% Dim CopySheetIndex As Integer Dim tmp As String Dim FileName As String With Application .ScreenUpdating = False .Calculation = xlCalculationManual .DisplayAlerts = False .EnableEvents = False End With '월보 파일 선택 Set f..
-
월보 취합 서식VB(A) 2017. 8. 29. 16:23
이런 거 혼자 만들고 치우면 되는데결국 뿌렸네. 암튼 오랜만에 하나.정규식 등 잡다한 기술이 들어감 Option ExplicitPrivate FileName As String Sub SumFiles() Dim OldBook As Workbook Dim NewBook As Workbook Dim SingleRange As Range Dim fd As FileDialog Dim FileChosen%, i%, j% With Application .ScreenUpdating = False .Calculation = xlCalculationManual .DisplayAlerts = False End With '기존 시트 삭제 If Sheets.Count > 2 Then For i = 3 To Sheets.Coun..
-
난수 생성기(로또)VB(A) 2017. 6. 24. 01:04
http://cafe.naver.com/excelmaster/140186 흔한 난수 생성기(로또) J1에 0~45 의 숫자를 입력하고 버튼을 누른다.1. 0을 입력하면 모든 셀에 난수가 출력.2. 1~45를 입력하면 B열에는 해당 숫자가 고정 출연 Option ExplicitOption Base 1 Sub Macro() Dim IncludeNum As Integer Dim v(5, 7) As Integer Dim i As Integer Dim j As Integer Dim tmp As Integer '기존자료 삭제 및 포함되어야할 숫자 선언 'J1이 0이면 모든 칸이 난수가 출력됩니다. Range("B1:H5").ClearContents IncludeNum = Range("J1").Value2 For i..
-
[VB.Net] 파일 생성일자로 폴더 생성 후 파일이동VB(A) 2017. 6. 4. 21:15
옛날 사진들이 한 폴더에 왕창 모여있는데iPhoto는 날짜별로 알아서 분류해주는 기능이 있었는데Photos로 넘어오면서 그런 기능이 없어져버려서 사진 관리에 어려움이 생겼다. 하여 사진생성날짜를 기준으로 폴더별로 분류해주는 코드를 짬. 이 파일들은 마지막 수정한 날짜를 검색해야 생성한 날짜를 뱉는 바람에고민고민 하다가 수정한 날짜를 뽑아내는 코드를 짰다. 이미지 생성일자를 가져오는 메소드도 있는데이 파일에는 적용이 안 돼서.. 할 수 없이 파일 생성일자를 가져옴.원본이 아니라 한번 편집한 파일이라서 그럴지도.. Option Explicit OnImports System.IOPublic Class Form1 Private Sub Form1_Load(sender As Object, e As EventArgs..
-
[VB.Net] 화면보호기VB(A) 2017. 6. 3. 20:58
화면보호기 플립시계가 지겨워져서 예전에 만들어둔 화면보호기가 생각나서 찾아보니 다행히 아이콘이랑 코드가 다 살아있네.백업은 필수.다시 까먹지 않기 위해 블로그에도 업로드. 소스와 배경화면과 야후 날씨 아이콘은 NAS에 있음.까먹지 말 것. Imports Microsoft.Win32Imports System.MathImports System.XmlImports System.IO Public Class frmScr #Region "수정본" '// TODO ! // '1. 배경의 색이 밝으면 Label을 읽기 힘들어집니다. 거기에 따른 보완이 필요해보이네요. '2. 그림 파일이 저에게 없어서 그림 위치는 못잡았습니다. '3. 즐거운 코딩하세요 :) 'By 이크루스 '// TODO ! // '// 위치 정보 (..
-
지역별로 시트 생성하여 나누기VB(A) 2017. 5. 16. 19:14
http://cafe.naver.com/excelmaster/139020 J열에 지사가 나열되어 있음지사별로 시트를 생성하여 나누는 매크로 1. J열에서 지사의 고유값을 추출2. 지사명을 순환하며 시트명을 생성3. 지사별로 데이터를 각 시트에 뿌리기 그 옛날, 구급계 업무를 볼 때 정말 필요했던 기능인데, 지금은 쓸 일이 없다는 점이 함정 Sub Macro() Dim C As New Collection Dim SingleRange As Range Dim JArea As Range Dim i As Integer Dim AllDB As Worksheet Set AllDB = Sheets("전체DB") Set JArea = Range("J2", Cells(Rows.Count, "J").End(3)) 'J열(지..