- 다양한 주제에 대해 자유롭게 글을 작성하는 게시판입니다.
Date 18/10/06 14:57:44
Name   Iwanna
File #1   #3_함수만으로_데이터_추출하기.xlsx (14.1 KB), Download : 35
Subject   [엑셀월드] #3. 함수만으로 데이터 추출하기


이전 강의

#1. 체크리스트 만들기 https://redtea.kr/pb/pb.php?id=free&no=8229&category=3
"아아, 이건 조건부서식이라고 한다."
#2. 커플공강표 만들기 https://redtea.kr/pb/pb.php?id=free&no=8267&category=3
"Countifs만 알면 커플끼리 알콩달콩 만들 수 있습니다! 아, 다들 애인은 당연히 있죠?"


엑셀월드 #3. 함수만으로 데이터 추출하기

#if함수와 활용
#LEFT함수
#RIGHT함수
#LEN함수
#EXACT함수
#INDEX함수
#VALUE함수
#자료형
#concatenate함수


1.문제상황

https://redtea.kr/pb/pb.php?id=qna&no=5476


문송하지만 작은 지식이라도 나누자는 마음에서 열심히 엑셀 강의를 연재하던 Iwanna에게 엑셀 쌉고수가 찾아왔습니다. “이 문제를 VBA없이 해결할 수 있을까요?” 쌉고수의 농락임을 알았지만 Iwanna는 눈물을 머금고 해결책을 찾아나서 봅니다.



2.문제를 설정하기

VBA는 강력한 도구입니다. 엑셀의 여러 요소들을 프로그래밍적으로 제어할 수 있기 때문입니다. 단순 작업을 자동화하고, 달력과 메모를 만들 수도 있으며, 자신만의 UI를 도입해서 프로그램을 만들 수 있습니다. 저 내용도 홍차넷과 pgr21에서 훌륭한 고수분들이 해결해 주셨습니다.

그러나 VBA 없이 문제를 접근해보는 것도 나쁘지는 않습니다. 엑셀에 대해서 새롭게 이해해볼 수도 있고, 아무래도 진입 장벽이 낮으니까요. 제시된 문제를 다음과 같이 생각해봅니다.




(1)여러 열에 나누어져서 배치된 데이터를 어떻게 한 줄로 만들 것인가? (함수 채우기 특성상 데이터가 일렬로 되어야 한다)
(2)A로 시작하는 데이터를 골라야 한다.
(3)뒷부분은 8자리, 숫자여야 한다.




3.함수로 풀어가기





LEFT함수입니다. A2셀에 있는 값에서, 왼쪽에서 하나 가져 옵니다.



이렇게 생긴 값(B2셀의 값)을 C2에서 판별합니다.

여기서 대문자와 소문자를 구분하는 게 애매한데

EXACT함수로 B2의 값과, 대문자로 만든(UPPER함수) B2의 값을 비교합니다.

여기서 나온 결과를 IF함수에 넣어서,
조건:EXACT(B2,UPPER(B2)
옳다면(TRUE값이 나오면):"대문자"라는 문자 값 반환
틀리다면(FALSE값이 나오면):"소문자 또는 기타 값"으로 판별합니다

*함수의 반환 값이 논리값(TRUE와 FALSE)로 나오는 함수들이 있습니다. 이런 함수들은 TRUE와 FALSE 여부에 따라 작동이 달라지는 IF함수와 궁합이 맞습니다.




이번에는 A2의 길이가 9인지 판별합니다. 해당 값의 길이를 반환하는 엑셀함수 LEN를 활용합니다.

조건:A2의 값이 9인가?
LEN(A2)=9
옳다면:TRUE 반환
틀리다면:FALSE 반환




이번에는 A2의 오른쪽 8자리 값을 추출합니다. RIGHT함수를 이용합니다

A2에 해당하는 값을
8자리 만큼 반환한다

8자리가 모자라로 추출되지만 이미 앞에서 9자리 조건을 판별했으므로 생략합니다.




이렇게 추출해낸 값은 일괄적으로 문자값으로 인식됩니다.
VALUE함수(숫자로 된 값은 숫자로 인식시키는 것)로 넣습니다. 문자가 섞인 값은 오류가 뜹니다.

*자료형(data type):같은 식으로 보이는 값이라도 문자, 숫자, 논리값 등 어떻게 인식하느냐에 따라 컴퓨터가 처리하는 방식은 완전히 달라집니다.




해당 값이 오류인지 아닌지 판별해주는 ISERROR함수를 사용합니다.




concatenate함수는 두 개 이상의 내용을 연결해서 담아주는 함수입니다.
이를 이용해 세 가지 내용을 연결합니다.
이 세 조건은 다음과 같이 나와야 합니다
(대문자?:대문자, 9자리?:TRUE, 숫자변환이 오류가 되나?:FALSE)
IF함수를 사용해 추가로 TRUE와 FALSE를 설정하겠습니다.




여기까지 오면 엑셀을 조금 하는 분들은 의문을 가질 수 있습니다.
"이건 다 좋아요. 이런식으로 해서 채워넣기를 하면 한 줄은 판별할 수 있겠죠.
그런데 데이터베이스에 있던 세 줄의 데이터를 한 줄로 만들지 않으면 붙여넣기를 해야 하지 않나요?
이건 예시라서 세 줄이지 원래 요구는 A열에서 Z열까지 잖아요?
그러면 26번을 따로따로 설정해 줘야 하나요?"







이번 연재의 백미입니다.
INDEX함수는 사실 단순한 함수입니다.

=INDEX(ARRAY, row_num, column_num)

ARRAY:제가 값을 불러올 테이블 항목입니다. 보통 절대참조를 해 줍니다.
-데이터베이스! : 데이터베이스 시트의 값을 참조합니다
-$A$1:$C$10 : A1부터 C10까지 영역의 값을 참조합니다.

row_num:몇 번째 행(가로줄)을 참조할 것인가?
column_num:몇 번째 열(세로줄)을 참조할 것인가?

mod함수:어떤 수를 특정한 수로 나눴을 때 나머지를 구합니다
quotient함수:어떤 수를 특정한 수로 나눴을 떄 몫을 구합니다.

이 수식을 이해하려면 수학적 센스가 조금 있어야 합니다;
한 줄의 데이터가 끝나는 순간 행의 숫자가 1로 초기화 되고, 열의 숫자가 +1되는 원리를
몫과 나머지로 표현한 것입니다.
K2의 값은 1,2,3,4의 값을 순서대로 넣어서, A2의 수식을 자동채우기 할 경우 1,2,3,4로 하나씩 늘어나도록 설정해 둔 것입니다.



이제 이런식으로 해 둘 경우, 데이터베이스의 값이 매 번 바뀌어도, 그 값을 일렬로 받아와서
원하는 데이터만 표시할 수 있습니다.
필터나 고급필터를 이용해서 모든 조건을 만족하는 경우만 고르면 됩니다.





4.모른다면 검색하기(구글갓)

이 모든 과정을 제 천재적인 두뇌로 했다!면 좋겠지만
사실 많은 내용을 참고했습니다.
여러분들도 엑셀로 문제를 해결할 때, 구글에 검색하면 어지간한 방식은 다 나옵니다!
결국 우리가 할 건 문제를 잘 이해하고, 그 과정을 잘 설정하는 것이지요.
이번에 제가 참조한 페이지들은 이렇습니다


여러 줄에 있는 데이터를 한 줄로 표현하기: https://m.post.naver.com/viewer/postView.nhn?volumeNo=6420993&memberNo=25014136
EXACT함수를 이용한 대소문자 구분: http://tomorrowwillbe.tistory.com/entry/%EC%97%91%EC%85%80-exact-%ED%95%A8%EC%88%98%EB%A5%BC-%EC%9D%B4%EC%9A%A9%ED%95%9C-%EB%8C%80%EC%86%8C%EB%AC%B8%EC%9E%90-%EA%B5%AC%EB%B6%84%ED%95%98%EA%B8%B0



이 칼럼은 내용은 새로운 내용을 전하는 칼럼이 아닙니다.
그러나 '문제해결'의 과정을 한 땀 한 땀 느껴보는 과정을 담아냈으므로
여기서 권유하는 과정을 스스로 했을 때 '문제풀이능력' 개념이 가장 높아질 것 같습니다!
그러면 또 다음시간에 뵙겠습니다!!



7
  • 엑셀고수는 추천


자력구제
잘 봤습니다 ^^
감사합니다!!!
엑셀고수님 충성충성충성^^7

그건 그렇고, 추후 엑셀에 추가된다는 [동적 배열] 기능을 사용하면 여러 줄에 걸쳐 있는 데이터를 한 줄로 만들지 않고도 한 번의 수식 입력으로 비교적 깔끔하게 처리가 가능할 것 같습니다. 이 참에 번외편으로 기존 엑셀의 배열 수식 기능과, 차세대 엑셀에서 배열 수식을 대체할 기능인 동적 배열에 대해 잠깐 짚고 넘어가는 것도 좋지 않을까 합니다.

참고 : https://gigglehd.com/gg/soft/3597104
1
개꿀팁 또 감사합니다
호라타래
이번에도 충성충성^^7
-_ㅡ7

ㅎㅎㅎㅎㅎ
Close_to_you
감사합니다
저야말로 감사합니다!
Crimson
이번 강의는 훨씬 어려워진것 같은데 천천히 따라해봐야겠어요
제가 '기본기는 뗀' 초급자 정도로 난이도를 설정하고 만들고 있었는데, 이번거는 실제 문제를 해결하다 보니 난이도가 뛰었네요 -_-; 이거랑 다음 강의에 나올 vlookup, sumifs만 다 이해해도 실생활에서 '몰라서 감도 못잡는' 문제는 없어질 것 같습니다.
김치찌개
잘 보고 있어요 추천!
목록
번호 제목 이름 날짜 조회 추천
공지 티타임 게시판 이용 규정 2 Toby 15/06/19 32826 7
15385 게임퍼스트 버서커 카잔에는 기연이 없다 - 던파의 시선에서 본 소울라이크(1) kaestro 25/04/16 42 1
15384 일상/생각코로나세대의 심리특성>>을 개인연구햇읍니다 14 흑마법사 25/04/15 380 8
15383 일상/생각평범하지 않은 평범한 사람들 1 큐리스 25/04/15 402 8
15382 음악[팝송] 테이트 맥레이 새 앨범 "So Close To What" 김치찌개 25/04/14 78 0
15381 IT/컴퓨터링크드인 스캠과 놀기 T.Robin 25/04/13 449 1
15380 역사한국사 구조론 9 meson 25/04/12 739 4
15379 오프모임날이 좋아서... 날이 좋지 않아서... 5/4 난지도벙 13 치킨마요 25/04/11 834 3
15378 스포츠90년대 연세대 농구 선수들이 회고한 그 시절 이야기. 16 joel 25/04/11 1001 8
15377 일상/생각와이프가 독감에걸린것 같은데 ㅎㅎ 2 큐리스 25/04/10 532 11
15376 일상/생각지난 일들에 대한 복기(직장내 괴롭힘에 대한 판단) 3 셀레네 25/04/10 800 5
15375 일상/생각우리 강아지 와이프^^;; 6 큐리스 25/04/09 748 5
15374 기타[설문요청] 소모임 활성화를 위한 교육과정에 대해 도움을 요청드립니다. 21 오른쪽의지배자 25/04/09 583 4
15373 과학/기술챗가놈 이녀석 좀 변한거 같지 않나요? 2 알료사 25/04/09 627 1
15372 과학/기술전자오락과 전자제품, 그리고 미중관계? 6 열한시육분 25/04/09 460 3
15371 꿀팁/강좌3. 다양한 사람과 다양한 감정 36 흑마법사 25/04/08 788 18
15370 기타만우절 이벤트 회고 - #3. AI와 함께 개발하다 7 토비 25/04/08 422 12
15369 정치깨끗시티 깜찍이 이야기 3 명동의밤 25/04/08 408 0
15368 일상/생각우연히 폭싹 속았수다를 보다가.. 8 큐리스 25/04/08 682 0
15367 영화지쿠악스 내용 다 있는 감상평. 2 활활태워라 25/04/08 395 1
15366 경제[의료법인 법무실] 병원관리회사(MSO) 설립, 운영 유의사항 - 사무장 병원 판단기준 1 김비버 25/04/08 461 1
15365 정치역적을 파면했다 - 순한 맛 버전 5 The xian 25/04/07 821 13
15364 정치날림으로 만들어 본 탄핵 아리랑.mp4 joel 25/04/06 452 7
15363 경제[일상을 지키는 법] 전세사기 피해자를 위한 '보증금 반환' 방법 2 김비버 25/04/06 571 5
15362 일상/생각조조와 광해군: 명분조차 실리의 하나인 세상에서 4 meson 25/04/05 443 2
목록

+ : 최근 2시간내에 달린 댓글
+ : 최근 4시간내에 달린 댓글

댓글
회원정보 보기
닫기
회원정보 보기
닫기
회원정보 보기
닫기
회원정보 보기
닫기
회원정보 보기
닫기
회원정보 보기
닫기
회원정보 보기
닫기
회원정보 보기
닫기
회원정보 보기
닫기
회원정보 보기
닫기
회원정보 보기
닫기
회원정보 보기
닫기
회원정보 보기
닫기
회원정보 보기
닫기
회원정보 보기
닫기
회원정보 보기
닫기
회원정보 보기
닫기
회원정보 보기
닫기
회원정보 보기
닫기
회원정보 보기
닫기
회원정보 보기
닫기
회원정보 보기
닫기
회원정보 보기
닫기
회원정보 보기
닫기
회원정보 보기
닫기
회원정보 보기
닫기
회원정보 보기
닫기
회원정보 보기
닫기
회원정보 보기
닫기
회원정보 보기
닫기
회원정보 보기
닫기
회원정보 보기
닫기
회원정보 보기
닫기
회원정보 보기
닫기
회원정보 보기
닫기
회원정보 보기
닫기
회원정보 보기
닫기