2018/03/07 - [엑셀] - [엑셀] 특정 문자와 일치하는 행 모아서 추출하기에 이어서
다음과 같이 조건을 판단하는 열에 A, B, C 에 해당하는 문자가 무작위로 쓰여 있고
그 중 A가 들어 있는 행만을 추출하려면 어떻게 해야 할까?
앞서와 같이
=IF(B:B="A"
하는 식으로 시작할 수는 없다. 그런 식으로는 3행과 7행만 추출될 뿐, 4, 6, 10행은 추출되지 않는다.
우리는 엑셀의 SEARCH 함수를 이용해 이 문제를 해결할 수 있다.
SEARCH 함수는 주어진 셀 내에서 특정 문자의 위치를 숫자로 반환해 준다.
아래와 같이 입력해 보자.
=SEARCH("A",B3)
셀 내에 A라는 글자가 들어 있는 경우는 해당 글자의 위치를 숫자로 출력하고, 없는 경우에는 에러를 출력한다.
이제 이것을 TRUE / FALSE 조건으로 바꾸어 줄 수 있다. 숫자는 TRUE로, 에러는 FALSE로.
ISNUMBER() 함수를 이용하면 되겠다.
이제 앞서 =IF(B:B=A 로 시도하려던 부분을 이것으로 대체하면 된다. 아래와 같다.
=IF(ISNUMBER(SEARCH("A",B:B)),
다음은 당연히 수열, ROW(A:A) 가 등장할 차례다. 배열수식이므로 CTRL + SHIFT + ENTER 를 잊지 않는다.
=IF(ISNUMBER(SEARCH("A",B:B)), ROW(A:A))
나머지 과정은 앞서와 동일하다.
SMALL() 함수를 사용해 3행에는 첫 번째, 4행에는 두 번째... 에 해당하는 값을 출력한다.
=SMALL(IF(ISNUMBER(SEARCH("A",B:B)), ROW(A:A)), ROW()-2)
이제 INDEX()를 활용해 어느 열의 세 번째 값을 가져와야 하는지 알려준다.
=INDEX(B:B, SMALL(IF(ISNUMBER(SEARCH("A",B:B)), ROW(A:A)), ROW()-2))
F4로 기준을 고정한 후
=INDEX(B:B, SMALL(IF(ISNUMBER(SEARCH("A",$B:$B)), ROW(A:A)), ROW()-2))
옆으로 채워 주고
아래로도 채워준다.
에러나 테두리의 처리는 앞서와 동일한 방법을 사용하면 되겠다.
이와 같은 방법으로 셀에 특정 문자가 포함되어 있는 행도 모아서 추출할 수 있다.
혹시 구글 스프레드 시트를 사용할 수 있는 환경이라면
다음과 같이 Filter() 함수를 사용하는 편이 낫겠다.
'엑셀' 카테고리의 다른 글
[엑셀]대분류 선택시 소분류가 달라지는 종속적(반응형) 드랍다운 메뉴 만들기 (3) | 2020.01.15 |
---|---|
[엑셀] 필터 기능 활용하기 (2) | 2018.12.06 |
[엑셀] 숨겨진 행/열을 다시 보이게 하는 세 가지 방법 (6) | 2018.10.22 |
[엑셀] 인터넷에서 다운받은 파일의 '제한된 보기' 해결 방법 (0) | 2018.10.02 |
[엑셀] VLOOKUP 대신 INDEX, MATCH 를 사용하면 좋은 4가지 경우 (0) | 2018.08.30 |
[엑셀] VLOOKUP 대신 INDEX, MATCH 사용하기 (0) | 2018.08.28 |
[엑셀] 배열수식에서 AND, OR, NOT 등의 논리연산 사용하기 (2) | 2018.07.10 |
[엑셀] 지난 달, 다음 달 입력하기 EDATE() EOMONTH() (0) | 2018.07.04 |
[엑셀] 최초로 0이 아닌 값이 나오는 곳 찾기 INDEX() MATCH() (26) | 2018.06.13 |
[로또] 로또 1등 당첨금액 계산 및 확률 검증 (큰수의법칙) (1) | 2018.05.28 |
댓글