전체 글 31

고급 필터 매크로를 VBA로 보완(변수, InputBox 함수)

안녕하세요. 고급 필터 매크로 강좌에서 수식으로 작성한 조건 값을 바꿔 작성한 매크로를 실행하면, 전에 조건으로 만들어진 결과를 지우고 변경한 조건을 기준으로 고급 필터가 실행되는 매크로 만드는 법을 배웠었죠? 바꿔야 하는 부분은 수식의 마지막 부분인 중복 과목 수를 나타내는 숫자 부분입니다. 이 매크로를 이용해서 조건을 바꾼 새로운 고급 필터 결과를 구하려면 다음 세 단계의 작업해야 하죠. 1. 조건 수식이 들어있는 셀을 선택해 셀 수정 상태로 전환 2. 원래 적혀 있던 숫자를 지우고 새로운 숫자를 입력하고 를 쳐서 셀 수정을 마무리 3. 단추를 눌러 매크로 실행 이 세단계를 하나로 줄일 방법이 없을까? 단추만 누르면 중복 과목 수를 묻는 창이 나타나고, 입력한 값을 이용해 매크로가 바로 실행되는 것을..

엑셀 2022.01.06

VBA로 범위 선택 방법과 매크로에 단축키 지정 방법

안녕하세요. VBA를 이용해 범위를 선택하는 방법과 매크로에 단축키를 지정하는 방법을 소개하겠습니다. 완성 파일 다운로드 VBE를 실행하고 모듈을 삽입한 뒤 프로시저를 작성합니다. 연속된 범위를 선택할 때는 Range 개체를 이용하고, 비연속된 범위를 지정할 때는 UNION 개체를 이용합니다. Sub 연속범위선택() Range(ActiveCell, ActiveCell.Offset(999, 0)).Select End Sub Sub 비연속범위선택() Union(ActiveCell, ActiveCell.Offset(999, 0)).Select End Sub 작성한 매크로에 단축키를 지정하려면 매크로 기록을 시작할 때 '바로 가기 키'를 지정할 수 있습니다. 이미 매크로를 기록했거나 VBA로 만든 프로시저의 경..

엑셀 2021.12.05

DDE로 매번 바뀌는 데이터를 딴 셀에 저장하고 차트로 만들기

안녕하세요. DDE(Dynamic Data Exchange)는 동적 데이터 교환 방법입니다. 주로 주식시세를 엑셀 파일과 연결해 보여주는 용도로 많이 쓰입니다. 완성 파일 다운로드 [A1] 셀에 바뀌는 데이터를 D열에 복사하도록 Worksheet_Change 이벤트에 코딩했습니다. Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address = "$A$1" Then If Range("C2").Value "" Then 위치 = Range("C1").End(xlDown).Row Else 위치 = 1 End If 위치 = 위치 + 1 Range("C" & 위치).Value = Date & " " & Format(Time, "hh:mm:ss") '..

엑셀 2021.07.28 (1)

Worksheet _change 이벤트를 이용해 값이 바뀌면 자동으로 작업 처리하기

안녕하세요. 셀에 값을 입력하면 자동으로 동작하는 작업을 원하는 경우가 있습니다. Worksheet_change 이벤트가 이럴 때 사용하는 이벤트입니다. 완성 파일 다운로드 [G2:H4], [J2:K4] 셀 범위에 값을 입력하면 [D2:E4] 셀 범위 수식이 계산되고 D열과 E열 값이 1 이상이고, 두 값이 같으면 A열에 'a'를 나타내고 B열에 시간을 나타내는 동작을 합니다. Private Sub Worksheet_Change(ByVal Target As Range) Dim KeyCells As Range Set KeyCells = Range("G2:H2,J2:K2") If Not Application.Intersect(KeyCells, Range(Target.Address)) Is Nothing Th..

엑셀 2021.07.28

8-Puzzle 풀기(A* 알고리즘)

완전히 구현된 것이 아닙니다. 이곳 저곳 정보를 검색해 적당히 수정했습니다. github.com/anteater333/8-puzzle anteater333/8-puzzle 부경대학교 2020 컴퓨터공학과 인공지능 과목 과제#2. Contribute to anteater333/8-puzzle development by creating an account on GitHub. github.com 이곳에 문제 정의와 C#으로 해결한 코드가 있습니다. ddae9.tistory.com/8 [백준-11112] Eight Puzzle (Astar Algorithm) 문제 요약 8-Puzzle 게임을 푸는 문제이다. 3x3 보드판에 한칸의 빈공간, 나머지 칸에는 1~8 숫자가 무작위로 위치해 있다. 빈칸과 숫자의 자리를..

기타 2021.04.15 (3)

거래내역 중 취소된 항목을 찾아서 표시하는 VBA

거래일자, 거래시간, 거래금액이 입력된 데이터가 있습니다. 실습 파일 다운로드 [C5] 셀 -149,900 은 [C3] 셀 149,900이 취소된 값을 의미합니다. VBA로 작성했습니다. Public Sub 찾기() i = 3 cnt = 0 Do If Range("C" & i).Value < 0 Then cnt = cnt + 1 Range("D" & i).Value = cnt j = i - 1 Do If Range("C" & j).Value = Abs(Range("C" & i).Value) And Range("D" & j).Value = "" Then Range("D" & j).Value = cnt Exit Do End If j = j - 1 Loop End If i = i + 1 Loop While R..

엑셀 2021.04.04

중복 항목에 채우기 후 삭제하기

안녕하세요. 자주 찾는 커뮤니티 사이트에 엑셀 관련 질문이 올라와 있었습니다. www.clien.net/service/board/kin/16003781?od=T31&po=6&category=0&groupCd=community 엑셀에서 중복값 강조와 제거를 같이 할 수 있을까요? : 클리앙 제가 원하는건 중복이 있었던건 표시된 후, 하나만 남기고 삭제되는건데용 중복값 표시 후 중복값 제거하면 중복되는 데이터가 없기 때문에 표시가 사라집니다 ㅠ countif를 써서 다른 셀에서 중 www.clien.net 이미 답글이 달려 있었고, VBA로 처리한 댓글도 있었습니다. VBA 반복문으로 처리하는 작업입니다. Sub 중복제거얍() Dim i As Double Dim j As Double Dim firstRow ..

엑셀 2021.03.27

전체 명단에 없는 항목 나타내기

안녕하세요. 데이터 파일 없이 글로 올려진 질문에 답을 할 때는 고급 필터에 COUNTIF 함수로 조건을 설정하면 되는 작업으로 보였었습니다. 막상 메일로 받은 데이터 파일을 보니 생각했던 것과는 다른 모습이었습니다. 6시 근무자와 14시 근무자를 D열부터 R열에 적었고, S열부터 근무하지 않은 명단을 나타내는 것입니다. 전체 명단은 AA열과 AB열에 기록되어 있습니다. 한참 생각해 봤지만 함수나 엑셀 기능으로 나타낼 방법은 없어 보입니다. 방법은 VBA로 작성하는 것입니다. 사용자 지정 함수로 만들고 싶었지만 결과값이 한 셀에만 나타나는 것이 아니라 여러 셀에 나타나는 것이라 프로시저로 처리했습니다. 커서는 결과를 나타낼 셀 [S7]에 둡니다. 매크로를 실행하야 하는데, [보기]-[매크로]-[매크로 보..

엑셀 2021.03.11

VLOOKUP 함수와 MATCH 함수의 마지막 인수 이해하기

안녕하세요. VLOOKUP 함수 마지막 인수 Range_lookup과 MATCH 함수 마지막 인수 Match_type은 찾는 방법을 정하는 인수 입니다. Range_lookup 인수는 0, 1의 두 가지 값 중 하나를 입력하고, Match_type 인수는 1, 0, -1의 세가지 값 중 하나를 입력합니다. 0은 두 인수 모두 정확하게 찾기를 선택하는 값이고, 나머지는 비슷하게 찾기를 선택하는 값입니다. 확인된 내용은 아니지만, VLOOKUP 함수는 INDEX 함수와 MATCH 함수를 이용해 찾기/참조 수식을 작성하다 자주 사용되는 경우에 사용할 수 있도록 나중에 개발된 함수인 것으로 생각됩니다. 그래서 MATCH 함수 인수보다 VLOOKUP 함수 인수는 간단하게 만들어져 있습니다. MATCH 함수 마지막..

엑셀 2021.02.24