하나셀-초간단 피봇

1백만 건 데이터도 3초면 OK!복잡한 부분합이나 그룹 함수 몰라도 클릭 한 번이면 자동으로 중복 제거, 건수와 합계까지 완성.

하나셀-카카오톡 PC 발송

복사 붙여넣기는 이제 그만! 카카오톡 PC버전에서 메시지를 직접 자동 입력해 1:1로 깔끔하게 보낼 수 있어요. 단체방에서 개인정보 유출 걱정 없이, 100명이 넘는 고객에게도 일일이 손 안 대고 안부를 전하세요.
엑셀자료 사용 안내 엑셀 매크로(VBA)를 이용하여 만든 간단한 프로그램과 엑셀 매크로(VBA)를 배울 수 있는 강좌가 있습니다.따라서, 대부분 프로그램을 이용하기 위해서는 엑셀 매크로 사용하기 설정을 하여야 합니다. (1.보안설정) 클릭 (2.개발도구설정) 클릭 3.매크로 차단 해제 방법

알면 너무 편리한 1줄짜리 매크로(VBA) 

​

웹페이지를 엑셀에 복사하면, 엄청난 하이퍼링크가 생성됩니다. 

이 경우에 엑셀 쉬트에 귀찮은 하이퍼링크가 여기저기 걸려있는데 전부 없애고 싶다면, 단 1줄이면 됩니다.

​

Cells.Hyperlinks.Delete

​

이처럼 간단한 명령어로 엑셀 쉬트에 있는 모든 하이퍼링크를 순간에 없애줍니다. 만약 매크로를 사용하지 않는다면 하이퍼링크가 있는 셀을 조심스럽게(왜냐하면, 잘못하면 하이퍼링크가 열립니다) 클릭해서, 마우스 우클릭 - 하이퍼링크 삭제라는 멍청한 행동을 반복해야 합니다.


 

문자 + 숫자를 정렬할 경우 숫자 순서로 정렬하고 싶지만, 엑셀에서는 문자+숫자 또는 숫자+문자로 된 셀은 전체를 문자로 인식합니다.

 

이미지 004.png

 

 

그래서, 위 그림 좌측과 같이 "문자1" 다음에 "문자2"가 안 오고, "문자10"이 정렬됩니다. 이유는 "문자10"이 "문자2"보다 앞선 "문자열"이기 때문입니다.

​

우리가 원하는 정렬 순서는 위 그림 우측과 같이 숫자순으로 정렬되게끔 하고 싶습니다. 만약 "문자+숫자" 데이터 수가 마우스로 클릭해서 우측과 같이 숫자 자리수를 동일하게 바꾼다면, 정렬은 우리가 원하는 숫자순으로 바뀌게 됩니다.

​

그런데, "문자+숫자" 데이터가 너무 많아서 일일이 마우스로 수정할 수 없는 경우에는 엑셀 매크로(VBA)로 간단하게 우측과 같이 "숫자" 자리수를 동일하게 만들어 줍니다.

 


만약 위의 그림과 같이 단순한 구조로 된 "문자+숫자"는 아주 간단한  방법이 있습니다.

​

① 컨트롤 + H 그리고, 모두 바꾸기(문자를 9999999999로 바꾸기)

② 정렬 

③ 컨트롤 + H 그리고, 모두 바꾸기(9999999999 숫자를 원래 문자로 다시 바꾸기)

​

즉, 문자를 전부 특이한 숫자(9999999999)로 바꿔서, 전체를 숫자로 만들어 준 후에, 정렬을 합니다. 이때, 셀속에 있는 문자는 전부 숫자이기 때문에 정렬이 숫자순으로 됩니다. 그리고 9999999999 숫자를 문자로 바꾸는 방법입니다.


 

위 방법이 가장 간단하고, 효과적입니다. 

하지만 엑셀 매크로 학습을 위해서 문자와 숫자를 분리하고, 숫자를 기준으로 정렬하는 법을 알아보도록 하겠습니다.

​

즉, 한 개의 셀에 들어있는 문자와 숫자를 구분하고, 숫자에는 동일한 자리수를 채워 넣어서, 정렬 시 숫자 순으로 정렬되게끔 하는 방법입니다.

​

이미지 005.png

 

 

 

약 16줄로 만든 엑셀 매크로(VBA)입니다. 왕초보용 엑셀 매크로(VBA)는 약간 어려워 보입니다.

 


매크로 설명

위 매크로는 2개의 For문으로 구성되어 있습니다. i 루핑과 j 루핑입니다.

i 루핑은 2부터 15까지이며, 15 대신에 셀 마지막을 뜻하는 명령어 MaxRow를 사용할 수 있습니다.

​

(만약 MaxRow를 사용하려면, MaxRow = Cells.Find("*", , , , xlByRows, xlPrevious).Row를 추가하고

15대신에  MaxRow를 써넣으면 됩니다.)

​

i 루핑은 줄(행)을 루핑 합니다. j 루핑은 i루핑 속에서, 셀속 문자 갯수를 세는 루핑입니다.

즉, for j = 1 to i_length 입니다. 즉, 셀속에 있는 문자를 처음(1)부터 끝(i_length)까지 루핑하라는 명령입니다. 셀속에 있는 문자 갯수를 한개 한개씩 세어 나가는 이유는 셀속에 있는 글자 속에 들어있는 숫자를 찾아내기 위해서입니다.

​

① i_number_ok = False 

    (i_number_ok라는 임의의 변수를 설정하고, 이 값은 거짓이라고 정의합니다)

​

② IsNumeric(Mid(Cells(i, i_column), j, 1)) = True 

    (만약 셀 속에 있는 글자를 앞에서부터 세어가면서 숫자가 나오면, i_number_ok를 참으로 바꿔줍니다.)

즉, 우리는 셀속에 있는 숫자가 나오는 지점을 찾아냅니다. 예를 들면 첫 번째 레코드 "문자1"의 i_length = 3입니다. 그중에 숫자가 나오는 지점, i_number_ok가 참으로 바뀌는 j = 3입니다.

​

③ 만약 i_number_ok = True 라면, 왼쪽문자(i_left)와 오른쪽문자(i_right)를 만들고,

오른쪽 문자의 포맷은 "00000" 형식으로 꾸며줍니다. Format(i_right, "00000")


 

​

위 매크로를 실행하면 아래와 같은 E열(5번열)과 같은 결과를 만들어 주며, 이때 정렬을 하게 되면,

C열(3번열)에 나오는 이상한 정렬이 아닌, 우리가 의도한 숫자순 정렬이 됩니다.

​

그런데, 우리가 원하는 셀속의 데이터가 지저분해 보여, 최초 오리지널 형식으로 다시 바꿔줘야 합니다.

즉, G열(7번째 칼럼)처럼 되돌리는 매크로를 한 개 더 만들어 줍니다.

 

이미지 006.png

 

 

아래 매크로(VBA)는 문자_숫자_정렬하기() 매크로와 90% 똑같습니다.

 

이미지 007.png

 

 

빨간색 박스로 되어있는 오른쪽(i_right)만 달라졌습니다.

CInt 명령은 Convert Integer(바꾸다, 정수)입니다. 즉 i_right를 정수 형태로 바꾸라는 명령입니다.

그 결과 G칼럼(7열)은 오리지널 데이터와 같은 형태를 가지고 있으며, 정렬 순서 또한 숫자순입니다.

​

이번에 배운 문자+숫자 정렬 매크로(VBA)의 목적은 정렬보다는 한 셀속에 있는 글자를 한개씩 세어나가는 방법이 중요합니다.

​

즉, for j 속에 들어있는 Mid(Cells(i, i_column), j, 1)이 핵심입니다.

 


Mid(Cells(i, i_column), j, 1)를 다시 한번 자세히 설명하자면, mid(셀(i행, i_column열), j, 1개)를 의미합니다.

만약 셀(i행, i_column열)의 값이 "문자1"이라면 j는 3번 루핑하며, j = 1은 "문", j = 2는 "자" , j = 3은 "1"입니다. 비로서 j = 3은 "1"이 되면 1은 바로 우리가 원하는 숫자값(isnumeric)이 되며 i_number_ok = true로 바뀌는 구조입니다.


 

이번에 배운 엑셀 매크로는 약간 어려운 수준입니다.

만약에 이 정도  수준을 이해하기만 한다면, 엑셀로 매크로(VBA)를 이용해서 못할 것이 없습니다.

​

이번 사례는 문자와 숫자를 단순히 2원화하여 구분하는 방법이었으나, 이와 같은 방식으로 응용할 수 있는 분야는 무궁무진합니다.

​

한글과 기타 외국어(영어, 중국어, 일본어 등)를 구분할 수 있으며, 괄호 속에 들어있는 문자를 뽑아낼 수 있습니다.

만약에 이번에 배운 문자와 숫자를 구분하는 방법을 충분히 익힌 경우, 셀 속에 들어있는 다양한 데이터를 추출하고 합칠 수 있게 됩니다.

​

약간 어렵기는 하지만, 만약 이해만 할 수 있다면 그 가치는 매우 가치 있는 일입니다.

​

엑셀 매크로가 들어있는 파일 첨부합니다.

​

​

​숫자졍렬및필터문제점.xlsm

​

  • ?
    슈슈 2024.01.10 14:08

    올려주신 13개의 포스트,,

    유용하고 보면서 연습 좀 해보겠습니다.

    이와는 별개로 혹시 다음 포스트는 이제 더이상 안올리시는걸까요? 

    설명에 들어가기 앞서 

    쓰시는 서론 글이 잘 읽히고 재밌습니다..

    엑셀을 공부하시면서 느꼈던 점이나 예전 시대 업무 모습도 살짝 엿볼수 있어서 좋네요...

    포스팅이 기대되는데 무려 2년 전 포스팅이라 다음 포스팅은 안나올 가능성이 높지만....

  • ?
    가자245 2024.05.31 11:31

    고맙습니다.

    매크로 공부할려고 강좌도 알아보고 하다가, 여기서 복학하는 것으로 결정을 하였습니다.

사진 및 파일 첨부

여기에 파일을 끌어 놓거나 왼쪽의 버튼을 클릭하세요.

파일 용량 제한 : 0MB (허용 확장자 : *.*)

0개 첨부 됨 ( / )

  1. 엑셀 프로그램 요청하기(무료 또는 책 구입 후원) 8 file

  2. 왕 초보용 엑셀 매크로(VBA) 배우기 - 1 (가장 중요한 3가지 기억하기) 5 file

  3. test 0

  4. 하나셀 유튜브 다운로드 프로그램 0

  5. PPT 모든 슬라이드에서 미디어를 동시에 실행하고 동영상으로 변환 0 file

  6. (참고용)엑셀을 능숙하게 사용하면 퇴근이 빨라질 수 있을까? 0

  7. 임시공휴일 포함 대한민국 휴무일 조회(향후 2년간) 0 file

  8. 엑셀 VBA로 PDF파일 페이지 나누기 0

  9. 이미지 속에 있는 표를 OCR로 인식 후, 테이블 데이터로 만들기 2 file

  10. 엑셀 스크롤바 일치 시키기(UsedRange 에러) 0 file

  11. 엑셀 다운로드 후 매크로 차단(보안 위험 Microsoft는 이 파일의 출처를 신뢰할 수 없기 때문에 매크로 실행을 차단했습니다. 2 file

  12. 엑셀 리본메뉴 imageMso (이미지 아이콘 검색) 1 file

  13. 수도쿠로 숫자와 친해지기(엑셀 매크로(VBA)로 스도쿠 프로그램 만들기(1/3)(2022.6.4 압데이트) 0 file

  14. 엑셀 공백 행. 열 전부 삭제 (엑셀에서 공란인 행과 열을 찾아서 한번에 삭제해 줍니다.) 0 file

  15. 파파고와 구글번역을 한번에(지천명영어) 프로그램 사용법 63 file

  16. 엑셀 표를 웹형식의 html 코드로 만들기(글꼴 설정, 셀병합 , 하이퍼링크 , 테두리 표시 등을 코드로 만들어 줍니다.) 3 file

  17. 대법원 부동산 경매 물건 검색 크롤링(엑셀) - 타 프로그램 없이 직접 엑셀에서 경매 물건 검색 4 file

  18. 엑셀로 PPT파일을 자동으로 만들기 5 file

  19. 영어, 일본어 듣기 공부 용 mp3 파일 가사 만들기 - 일괄 만들기 1 file

  20. 왕 초보용 엑셀 매크로(VBA) 배우기 - 13 (문자 + 숫자 정렬) 2 file

  21. 왕 초보용 엑셀 매크로(VBA) 배우기 - 12 (공백 행 일괄 삭제하기) 0 file

  22. 왕 초보용 엑셀 매크로(VBA) 배우기 - 11 (매일 10페이지 책읽기 프로그램 6/6) 1 file

Board Pagination Prev 1 2 3 Next
/ 3

LOGIN

SEARCH

MENU NAVIGATION