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

VBA
작성자
hanikr
작성일
2021-11-25 05:43
조회
52
엑셀버전 : 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,679
번호 카테고리 제목 작성자 작성일 추천 조회
공지사항 공지사항
⭐ [더 나은 커뮤니티 문화를 위한 Q&A 글 작성 규칙] ⭐ (10)
오빠두엑셀 | 2021.10.28 | 추천 16 | 조회 753
트로피 오빠두엑셀 2021.10.28 16 753
24253 함수/공식
New 파일과 관련된 숫자를 다른 파일에 있는 숫자로 변경할 수 있는 방법 첨부파일 (1)
안녕 | 2021.12.02 | 추천 0 | 조회 11
안녕 2021.12.02 0 11
24252 함수/공식
New 표 범위 내에서 맨 좌측값 가져오기 질문드립니다. (2)
김성환 | 2021.12.02 | 추천 0 | 조회 12
김성환 2021.12.02 0 12
24251 기능/도구
New 엑셀 주식 가격 예측 양식 사용 질문입니다. 첨부파일 (1)
thause | 2021.12.02 | 추천 0 | 조회 18
thause 2021.12.02 0 18
24249 VBA
New 모든 하위 폴더 내의 최신 파일 하나만을 특정 폴더로 복사하려 합니다
너의나라 | 2021.12.02 | 추천 0 | 조회 17
너의나라 2021.12.02 0 17
24248 차트/그래프
New 그래프에서 가로 축 Data 설정하는 법 첨부파일
Etter | 2021.12.02 | 추천 0 | 조회 20
Etter 2021.12.02 0 20
24245 VBA
New 아웃룩 이메일 내용에 VBA 변수 넣기 (1)
argus | 2021.12.02 | 추천 0 | 조회 22
argus 2021.12.02 0 22
24239 VBA
New [초보] 웹 크롤링 관련 질문입니다. 첨부파일 (2) 답변완료
스캐쳐 | 2021.12.02 | 추천 0 | 조회 24
스캐쳐 2021.12.02 0 24
24238 VBA
New 어떤 한 배열에서 다른 배열에 있는 값만 제외하고 새로운 배열3을 만들 수 있을까요? (2)
Paul | 2021.12.02 | 추천 0 | 조회 24
Paul 2021.12.02 0 24
24233 함수/공식
New 0이상의 값(유효값)이 있는 칼럼과 그 값을 불러오고 싶습니다. 첨부파일 (2) 답변완료
크놉스 | 2021.12.02 | 추천 0 | 조회 25
크놉스 2021.12.02 0 25
24232 차트/그래프
New 엑셀 차트에서 특정 값이 너무 높을때 차트화 하는 법 (2) 답변완료
담담 | 2021.12.02 | 추천 0 | 조회 31
담담 2021.12.02 0 31
24230 VBA
New vba 코딩을 부탁드립니다. 첨부파일 (2)
Trimman | 2021.12.02 | 추천 -2 | 조회 33
Trimman 2021.12.02 -2 33
24228 함수/공식
New 등급 기준표를 참조해서 연산을 하려고 할때 (1) 답변완료
지천 | 2021.12.02 | 추천 0 | 조회 22
지천 2021.12.02 0 22
24221 파워쿼리/피벗
New 엑셀 종속 테이블 문의 첨부파일 (2)
유령회원 | 2021.12.02 | 추천 0 | 조회 22
유령회원 2021.12.02 0 22
24216 VBA
New 로그인엑셀 사용시 수식입력줄 사라짐, 모든 엑셀창 자동종료 첨부파일 (1)
엑셀이 | 2021.12.02 | 추천 0 | 조회 19
엑셀이 2021.12.02 0 19
24215 VBA
New set_routine 반복 매크로 (1)
하늘의 꿈 | 2021.12.01 | 추천 0 | 조회 24
하늘의 꿈 2021.12.01 0 24
VBA
New 재질문 입니다.
하늘의 꿈 | 2021.12.02 | 추천 0 | 조회 12
하늘의 꿈 2021.12.02 0 12
24213 파워쿼리/피벗
New [파워쿼리] 계약자코드 중 특수계약 날짜가 일반계약 최소 최대 사이에 포함여부 열추가 첨부파일 (1)
seorin | 2021.12.01 | 추천 0 | 조회 20
seorin 2021.12.01 0 20
24211 VBA
New 시트를 메일머지하여 Hancom PDF 파일로 출력하는 매크로 VBA 코드 도움을 받고 싶어요. 첨부파일 (4) 답변완료
김학동 | 2021.12.01 | 추천 0 | 조회 34
김학동 2021.12.01 0 34
24210 함수/공식
New 혹시 이런 것도 구할 수 있을까요? (3)
마른막대기 | 2021.12.01 | 추천 0 | 조회 38
마른막대기 2021.12.01 0 38
24207 함수/공식
New 중복값 중 제일 마지막 값 추출 (2)
rladud99 | 2021.12.01 | 추천 0 | 조회 39
rladud99 2021.12.01 0 39
24203 함수/공식
New 엑셀 값 가로/세로 변경하는 방법 문의드려요! 첨부파일 (2) 답변완료
이시현 | 2021.12.01 | 추천 0 | 조회 39
이시현 2021.12.01 0 39
24200 함수/공식
New 데이터를 일정간격으로 띄워서 입력하고 싶습니다. (8) 답변완료
wlfl**** | 2021.12.01 | 추천 0 | 조회 49
wlfl**** 2021.12.01 0 49
24191 함수/공식
New 일치하는 값에 특정 데이터를 넣고싶습니다. (1)
노랑토끼 | 2021.12.01 | 추천 0 | 조회 54
노랑토끼 2021.12.01 0 54
24188 VBA
New VBA에서 이름이 긴 파일이 있는데 그 파일 이름을 바꾸고 싶습니다.(상세설명 필수) (2)
naver_618c988d51534 | 2021.12.01 | 추천 0 | 조회 31
naver_618c988d51534 2021.12.01 0 31
24184 문서서식
New 엑셀 자동채우기 관련 문의 (1) 답변완료
오문환 | 2021.12.01 | 추천 0 | 조회 42
오문환 2021.12.01 0 42
24182 함수/공식
New 줄바꿈 함수 도와주세요 첨부파일 (3)
김상준 | 2021.12.01 | 추천 1 | 조회 43
김상준 2021.12.01 1 43
24177 기능/도구
New 매크로 와 자동필터
FLOWERBALL | 2021.11.30 | 추천 0 | 조회 48
FLOWERBALL 2021.11.30 0 48
24168 VBA
New (문의) 번호가 같을경우 옆에 있는 셀의 값을 병합 (1)
ryan_cruze | 2021.11.30 | 추천 0 | 조회 44
ryan_cruze 2021.11.30 0 44
24166 기능/도구
New 질문있습니다.
최강씨맨 | 2021.11.30 | 추천 0 | 조회 36
최강씨맨 2021.11.30 0 36
24163 함수/공식
New 엑셀 특정 내용 추출하는 수식 질문드립니다. (2)
PAKSAW | 2021.11.30 | 추천 0 | 조회 52
PAKSAW 2021.11.30 0 52
24161 함수/공식
New 특정 날짜 값 찾기 (2)
ㄱ박민극 | 2021.11.30 | 추천 -1 | 조회 47
ㄱ박민극 2021.11.30 -1 47