여러 셀 데이타를 비교하기 (VBA)

VBA
작성자
hanikr
작성일
2021-11-25 05:43
조회
45
엑셀버전 : M365

운영체제 : 윈도우10

안녕하세요. VBA code를 속도를 개선하려고 하는데 도움이 필요합니다.

아래와 같이 두개의 SHEET가 있다고 가정하고 A/B/C의 값이 모두 동일할 때 SHEET2에 있는 값을 복사하는 것입니다.

그런데 이렇게 간단하게 돌리면 너무 처리 속도가 느립니다. 세개의 셀의 내용을 합쳐서 비교하는게 느린것으로 보입니다. 다른 두 시트에서 세개의 셀을 비교하여 같을 때에만 복사할 수 있는 빠른 방법이 있을까요? 도움 주시면 감사하겠습니다.

for a = 2 to 10000 'sheet 1 반복

aa = sheets(1).cells(a,1) & sheets(1).cells(a,2) & sheets(1).cells(a,3)

for b = 2 to 400 'sheet2 반복

bb = sheets(2).cells(b,1) & sheets(2).cells(b,2) & sheets(2).cells(b,3)

if aa = bb then

sheets(1).cells(a,5) = sheets(2).cells(b,5).

endif

next

next

 

SHEET 1에 있는 내용 SHEET 2에 있는 내용
A B C A B C
1 A AA 1 A AA
2 B BB 3 B CD
3 C CC 4 D DD
4 B DD 8 E CC
5 D BB
6 E BB
7 D CC
8 E BB
9 E DD
10 A BB
전체 4

  • 2021-11-25 09:42

    사전 작업과 VBA를 혼용하면 빠른 결과를 얻을 수 있어요.

    세 셀의 자료가 결합된(A & B & C) 결과가 유니크하다는 전제하에

    sheet1에서 세 자료 결합을 하고, sheet2에서도 세 자료 결합을 합니다.

    sheet1의 결합된 자료 영역을 '자료_1'로 이름 정의한 후

    sheet2의 결합된 각각의 자료에 대하여 =COUNTIF(자료_1, sheet2의 결합된 자료) 함수를 적용합니다.

    여기까지가 선행 작업이고,

    이후부터 VBA를 적용하면 될지 싶습니다.

    COUNTIF( ) 함수의 결괏값이 0이 아닌 sheet2의 모든 자료를 필터링하여 추출된 결과만을 sheet1에 복사하여 붙여넣기하면 됩니다.

    첨부된 파일을 참조하여 VBA를 만들어보세요

    첨부파일 : 예시_비교복사.xlsx


    • 2021-11-25 17:59

      @김학동 님 조언감사합니다. 언급하신 것처럼 저도 미리 text를 합쳐서 진행 해 봤는데 확실히 VBA 속도가 빨라진게 느껴집니다. For next 구문만 돌리면 1초 이하로 완료되는데, 거기에 가각의 text를 합쳐서 비교하니 60초 정도 걸리고, 미리 text를 합쳐 놓은 것들을 비교하면 12초 정도입니다.. 두번째 For next에 text를 합치는 code가 들어가면 많이 느려지는 것 같습니다. 좀 더 빠른 방법이 없을까 고민입니다.

      감사합니다.


  • 2021-11-25 23:08

    혹시 몰라서 답글 남겨드려요!

    Application.ScreenUpdating = False

    코드~~

    Application.ScreenUpdating = true

    이런식으로 코드 상하단에 코드를 넣어주면 화면에 실행내용을 실시간으로 보여주지 않고 백그라운드에서 코드를 수행하기 때문에 속도가 개선될 가능성이 있습니다.

    오빠두엑셀님도 글을 작성해두신 게 있네요

    Application.ScreenUpdating 사용법 총정리 (매크로를 더욱 빠르게!) :: 엑셀 위키


    • 2021-11-26 18:54

      @엑셀복지사 님 언급하신 사항은 적용이 되어 있습니다. 조언 감사합니다.


전체 4,625
번호 카테고리 제목 작성자 작성일 추천 조회
공지사항 공지사항
⭐ [더 나은 커뮤니티 문화를 위한 Q&A 글 작성 규칙] ⭐ (8)
오빠두엑셀 | 2021.10.28 | 추천 12 | 조회 657
트로피 오빠두엑셀 2021.10.28 12 657
24072 VBA
New 수식이 있는 데이터에서 매크로를 사용하여 다른시트에 결과값만 붙여넣고 싶습니다. 첨부파일 (2)
호랑이파워 | 11:10 | 추천 0 | 조회 15
호랑이파워 11:10 0 15
24068 파워쿼리/피벗
New 파워쿼리 간단한 '값 바꾸기' 에 대해서 질문드립니다. 첨부파일 (1)
월마리아 | 00:18 | 추천 0 | 조회 17
월마리아 00:18 0 17
24065 피벗테이블
New 열과 행 바꾸는 쉬운 방법있나요? 첨부파일 (2)
jyj6**** | 2021.11.27 | 추천 0 | 조회 27
jyj6**** 2021.11.27 0 27
24060 VBA
New 메모리가 부족하다고 뜹니다. 첨부파일
선물 | 2021.11.27 | 추천 0 | 조회 22
선물 2021.11.27 0 22
24059 VBA
New 첨부파일을 서버 업로드
권원재 | 2021.11.27 | 추천 0 | 조회 23
권원재 2021.11.27 0 23
24053 파워쿼리/피벗
New 엑셀 배열 순서를 바꾸고 싶습니다. 첨부파일
jyj6**** | 2021.11.27 | 추천 1 | 조회 24
jyj6**** 2021.11.27 1 24
VBA
New Re:엑셀 배열 순서를 바꾸고 싶습니다.
Yukon | 2021.11.27 | 추천 1 | 조회 33
Yukon 2021.11.27 1 33
피벗테이블
New Re:Re:엑셀 배열 순서를 바꾸고 싶습니다. (1)
jyj6**** | 2021.11.27 | 추천 0 | 조회 18
jyj6**** 2021.11.27 0 18
24048 VBA
New 재고관리 툴 만들기 질문이요 첨부파일 (2)
선물 | 2021.11.26 | 추천 0 | 조회 32
선물 2021.11.26 0 32
24046 함수/공식
New 날짜별로 근태 정리를 하려면 어떻게 해야할까요 첨부파일 (2)
ㅁㅁㅁㅁㅁ | 2021.11.26 | 추천 0 | 조회 47
ㅁㅁㅁㅁㅁ 2021.11.26 0 47
24042 VBA
New 한 코드를 가진 사람의 계약일자 최소값 최대값 구하기 첨부파일
seorin | 2021.11.26 | 추천 0 | 조회 27
seorin 2021.11.26 0 27
24039 함수/공식
New 다중 조건 및 가장 낮은 일시에 매칭되는 값 불러오기 첨부파일 (6)
감사하모니카 | 2021.11.26 | 추천 0 | 조회 32
감사하모니카 2021.11.26 0 32
24038 VBA
New ZAN IMAGE PRINTER 프로그램에서 JPG 파일명을 내 마음대로 (3)
goodman | 2021.11.26 | 추천 0 | 조회 22
goodman 2021.11.26 0 22
24033 문서서식
New 조건부 서식 특정열 단어포함시 해당 행의 서식 변경 방법 첨부파일 (2) 답변완료
아빠의꿈 | 2021.11.26 | 추천 0 | 조회 29
아빠의꿈 2021.11.26 0 29
24032 함수/공식
New 함수 초보 질문있습니다. (2) 답변완료
윤태종 | 2021.11.26 | 추천 0 | 조회 29
윤태종 2021.11.26 0 29
24029 VBA
New 엑셀로그인 프로그램 사용자 개인별 시트만 보이게 하는 방법 첨부파일 (1)
엑셀이 | 2021.11.26 | 추천 0 | 조회 32
엑셀이 2021.11.26 0 32
24014 VBA
New Private Sub Worksheet_Change(ByVal Target As Range) 조건문의 (1)
yg | 2021.11.26 | 추천 1 | 조회 33
yg 2021.11.26 1 33
24011 VBA
New vba 고급필터후 인쇄 자동화 첨부파일 (1)
naver_6180ef1e63220 | 2021.11.26 | 추천 0 | 조회 39
naver_6180ef1e63220 2021.11.26 0 39
24010 문서서식
New 양이 많은 '병합하고 가운데 맞춤 '버튼을 눌러서 할일을 쉽게 하는방법 첨부파일 (3)
아빠의꿈 | 2021.11.26 | 추천 0 | 조회 45
아빠의꿈 2021.11.26 0 45
24009 함수/공식
New 오빠두 강의 중 마지막셀 이동에 관하여 질문드립니다. (MATCH함수) (2)
월마리아 | 2021.11.25 | 추천 0 | 조회 35
월마리아 2021.11.25 0 35
24006 함수/공식
New 조건부 서식 함수 첨부파일 (1)
AFOPWEOI1213 | 2021.11.25 | 추천 -1 | 조회 42
AFOPWEOI1213 2021.11.25 -1 42
24005 파워쿼리/피벗
New 파워쿼리에서 다중조건 평균구하기 (1)
황선규 | 2021.11.25 | 추천 0 | 조회 27
황선규 2021.11.25 0 27
24002 기능/도구
New 엑셀 요 기능 이름이 뭐죠?ㅜㅜ (2) 답변완료
냥냥 | 2021.11.25 | 추천 0 | 조회 39
냥냥 2021.11.25 0 39
24000 함수/공식
New 조건부서식에서 배열수식이 입력가능한가요? (2) 답변완료
무케 | 2021.11.25 | 추천 0 | 조회 35
무케 2021.11.25 0 35
23998 VBA
New Auto_open / Auto_close에서 프로젝트나 라이브러리를 찾을수없습니다. 문제.... 아시는분 (1) 답변완료
카이로젠 | 2021.11.25 | 추천 0 | 조회 24
카이로젠 2021.11.25 0 24
23996 기능/도구
New 제품명 일괄 수정방법 (2) 답변완료
태환11 | 2021.11.25 | 추천 0 | 조회 36
태환11 2021.11.25 0 36
23995 함수/공식
New 해찾기 문제 관련, 전체 양은 10kg은 채우되, 목표 함량을 충족하고 가장 저렴한 방법 찾기..? 첨부파일 (5)
맞장구침 | 2021.11.25 | 추천 0 | 조회 34
맞장구침 2021.11.25 0 34
23991 VBA
New function결과값 외에도 그 안의 값을 다른셀에 입력하고싶습니다 (1)
오리22 | 2021.11.25 | 추천 0 | 조회 24
오리22 2021.11.25 0 24
23990 함수/공식
New or 함수 문의드립니다. (3) 답변완료
무케 | 2021.11.25 | 추천 0 | 조회 32
무케 2021.11.25 0 32
23985 VBA
개인용매크로 관련문의입니다. (4) 답변완료
무케 | 2021.11.25 | 추천 0 | 조회 39
무케 2021.11.25 0 39
23980 함수/공식
함수문의 드립니다 (5) 답변완료
제이올라 | 2021.11.25 | 추천 0 | 조회 38
제이올라 2021.11.25 0 38
23977 VBA
중복행 데이터 입력, 통합 관련 문의드립니다. 첨부파일 (4) 답변완료
케빈 | 2021.11.25 | 추천 0 | 조회 37
케빈 2021.11.25 0 37