VB(A) 197

[& Chronicle] 원하는 글자 추출하기

지식인 질문인데, 어떤 이유인지 '비공개' 처리가 되어있습니다. Chronicle님의 풀이내용입니다. - http://blog.naver.com/asaph16/221003500708LEFT, FIND, REPLACE 와 같은 비교적 대중화 된 함수로 풀이를 하였습니다. 매크로의 경우, 텍스트 추출은 정규식이 와따입니다.패턴을 짜는 게 까다롭긴 하지만 규칙만 찾아내면 정규식만큼 편한 것도 없습니다.텍스트 추출이 업무에서 많은 비중을 차지한다면 정규식을 공부해보세요. Function Macro$(tmp$) Dim Reg As Object Dim MySet As Object Dim v$(), i% Set Reg = CreateObject("vbscript.regexp") With Reg .Global = Tr..

[& Chronicle] 표 구조 바꾸기

http://kin.naver.com/qna/detail.nhn?d1id=1&dirId=102020101&docId=271030829&qb=7Zqo7Jyo7KCB&enc=utf8&section=kin.qna&rank=80&search_sort=0&spq=0 위의 표를 아래처럼 변경하는 질문입니다.행방향으로 된 데이터를 열방향으로 바꾸면 됩니다. Chronicle님은 OFFSET, INDEX, MATCH, LARGE 함수와 보조열로 해결하였습니다.- http://blog.naver.com/asaph16/221000026754 제가 풀이한 과정은 아래와 같습니다.모든 데이터를 한 줄로 풀어낸 후에 빈 칸을 삭제하는 과정을 거쳤습니다. 오늘도 큰 힘 들이지 않고 코드 하나 날로 먹었네요.Sub Macro() ..

[& Chronicle] 일치하는 패턴 개수

http://kin.naver.com/qna/detail.nhn?d1id=1&dirId=102020101&docId=276037321 A행에는 패턴이 나와있고 C행에는 데이터가 나열되어 있습니다.A행의 패턴이 C행에 몇 개나 있는지 파악하는 질문입니다.Chronicle님은 PHONETIC 함수와 이름관리자를 이용하여 해결하였습니다. - http://blog.naver.com/asaph16/220999094014 매크로의 해결방법에는 여러가지가 존재합니다만역시 이런 류는 정규식이 편합니다.정규식을 적용하기 위해 A행과 C행을 문자열로 변환하여 준 다음 일치하는 패턴의 개수를 구해주면 됩니다. Sub Macro() Dim MyPattern As String Dim PatternData As String '패..

주식표 변경(상승, 하락 글꼴변경, 주요 금액단위 변경)

http://cafe.naver.com/excelmaster/138821 외부에서 긁어온 주식 정보의 서식을 변경하는 질문입니다.1. 상승과 하락 글자를 화살표로 바꾸고 색깔 지정2. 주요 금액의 단위를 변경 Select Case 문으로 상승과 하락의 글자를 기호로 바꿔주었고금액의 주요단위를 변경하는 것은 미리 짜둔 코드를 이용하였습니다. - http://dorobo.tistory.com/356 사용자정의함수를 이용한 것 말고는 특별한 것이 없는 코드입니다만주식 하시는 분들은 서식 변경할 때 사용하시면 좋을 듯 합니다.Sub Macro() Dim SingleRange As Range Dim AllStock As Range Set AllStock = Range("C2", Cells(Rows.Count, 5..

VB(A) 2017.05.07

[& Chronicle] 그룹별 합계 구하기

http://cafe.naver.com/excelmaster/138780 G행에 각 그룹별로 숫자가 입력되어 있고 그룹의 맨 아래 빈칸에 그룹별 합계를 입력하는 내용입니다. 이런 경우는 Chronicle님의 해법처럼 G행을 선택하여 빈셀만 선택한 후 자동합계를 구하는 것이 제일 쉬워보입니다. - http://blog.naver.com/asaph16/220998378905 저는 매크로를 이용하여 다음과 같은 흐름으로 코드를 짰습니다. 1. SpecialCells로 데이터가 있는 영역만 선택합니다. 2. Areas를 이용하여 그룹별로 순환합니다. 3. 그룹의 맨 마지막 빈칸에 합계를 출력합니다. 어떻게든 코드는 짰지만 아무래도 엑셀 기본기능을 이용하는 것이 이번 문제에서는 더 편리할 듯 합니다. Sub Ma..

[& Chronicle] 파트별 생산 합계 구하기

http://kin.naver.com/qna/detail.nhn?d1id=1&dirId=102020101&docId=275916203 위 그림과 같이 파트별 생산 합계를 구하는 질문입니다. 타트타임이 모두 채워져있다면 쉽게 해결될 문제입니다만 어쩐 이유에서인지 그렇게는 안 되나봅니다. Chronicle님은 위와 같이 LookUp을 이용하여 풀어냈습니다. - http://blog.naver.com/asaph16/220997871985 이번 문제를 풀어낸 흐름은 맨 마지막에서 End(xlUp)로 위 데이터로 차례로 올라가며 파트별 생산합계를 구하는 방식입니다. 불규칙하게 반복되는 경우는 Do Loop문이 역시 편리합니다. Sub Macro() Dim r As Integer '기존자료 삭제 Range("E4"..

[& Chronicle] 상대참조 주소 유지하여 수식 복사하기

http://cafe.naver.com/excelmaster/138783 엑셀의 장점이자 단점이지요.복사를 하여 다른 곳에 붙여넣으면 이동거리만큼 참조 또한 변한다는 겁니다. 그러기를 원치 않은 사람들도 있는데 말이지요. Chronicle님은 엑셀의 기본기능을 이용하여 다음과 같이 풀었습니다. - http://blog.naver.com/asaph16/2209984337101. 등호를 다른 기호로 바꾼다.2. 원하는 곳에 붙여넣는다.3. 다른 기호를 다시 등호로 바꾼다.그러면 상대참조를 유지한 채 깔끔하게 복사가 됩니다. 매크로로는 아래와 같이 진행합니다.수식을 그대로 복사한다는 한 줄입니다.사실 코드라고 할 것까지 없어서 첨부도 하지 않았습니다. 매크로는 한번씩 허무함을 안겨줍니다. Sub Macro()..

[& Chronicle] 공급업체가 다를 경우 행삽입 하기

http://kin.naver.com/qna/detail.nhn?d1id=1&dirId=102020101&docId=262572939&qb=7Zqo7Jyo7KCB&enc=utf8&section=kin.qna&rank=3&search_sort=0&spq=0 에 등록된 질문글입니다. A열에 공급처명이 나열되어있고 공급처명이 다를 경우 행삽입이 필요한 내용입니다. Chronicle님의 해결방법입니다. - http://blog.naver.com/asaph16/220997504215 필터기능을 활용하여 행삽입을 하는 방식입니다. 이런 수작업은 매크로의 장점을 살릴 수 있는 작업 중 하나입니다. 데이터가 수백건을 넘어가게 되면 이미 사람 손으로는 해결하기가 버거운 면이 있지요. 하지만 매크로를 알면 수만데이터가 존..

[& Chronicle] 불규칙한 그룹의 문자열 구분

http://kin.naver.com/qna/detail.nhn?d1id=1&dirId=102020101&docId=112564336&page=1#answer2 에 올라온 질문입니다. 하나의 그룹마다 공백으로 이루어져있고, 알파벳부분과 나머지 부분으로 구분하여 셀에 출력하는 내용입니다. 그룹 안에는 데이터가 3개도 있고 4개도 있는 등 불규칙합니다. 아래의 두 가지가 질문에서 파악할 수 있는 규칙입니다. 1. 하나의 그룹마다 공백으로 이루어져있다. 2. 각 그룹의 첫번째 데이터와 나머지 데이터를 분리한다. 먼저 Chronicle님의 수식을 보겠습니다. - http://blog.naver.com/asaph16/220997237905 아래와 같이 보조열을 이용하여 영문자와 그렇지 않은 것을 구분한 것이 인상..

[& Chronicle] 두 날짜 사이에서 특정 요일의 개수 구하기

두 날짜 사이에서 특정 요일의 개수를 세는 법입니다. 먼저 Chronicle님의 배열수식입니다. - http://blog.naver.com/asaph16/220622364366 {=SUM(N(WEEKDAY(ROW(INDIRECT(A1&”:”&B1)),2)=2} 날짜의 일련번호를 구한 뒤 WeekDay 함수로 특정 요일에 해당하는 숫자와 비교 결과값을 모두 더함 의 흐름을 가집니다. 이번 매크로도 위 흐름과 다르지 않습니다. 결국 VBA도 엑셀 안에서 움직이며 이것은 엑셀을 모르면 VBA를 다룰 때 한계가 있다는 것을 의미합니다. 날짜에 대한 개념은 위 Chronicle님 블로그에 자세히 나와있으니 여기서는 VBA만 풀어내겠습니다. 코드는 아래와 같으며 알고리즘은 위 1~3에 해당합니다.Function G..