VB(A)/당근쨈 & Chronicle 17

[& Chronicle] 지정기간의 합 구하기

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..

[& Chronicle] 정규식으로 특수문자 제외하고 문자와 숫자만 분리하기

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] 경우의 수 구하기

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] 연속근무 일수 구하기

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..

[& 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 '패..

[& 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()..