엑셀 vlookup처럼 다수 결과 받기
=INDEX($C:$C, SMALL(IF($E2=$B:$B, ROW($B:$B)-MIN(ROW($B:$B))+1, ""), COLUMN(A2)))
배열 수식 만들기
- 수식 입력줄에 수식을 복사(Ctrl + c), 붙여넣기(Ctrl + v)한다.
- Ctrl + Shift + Enter 키를 누른다.
#num 에러 제거
=IFERROR(array_formula, "")
array_formula 자리에 원래 수식을 입력합니다.
=IFERROR(INDEX($C:$C, SMALL(IF($E2=$B:$B, ROW($B:$B), ""), COLUMN(A2))),"")
배열 수식
조건에 맞는 셀을 찾습니다. $E2=$B:$B
B열에서 E2와 같은 값을 찾습니다. 같은 값을 찾으면 ROW($B:$B)
행 값을 반환합니다.
뒤에 -MIN(ROW($B:$B))+1
는 상단에 있는 공백을 제외하기 위해 사용합니다. 데이터만 포함하고 있는 열이라 가정하고, 해당 내용은 제외하였습니다.
SMALL(IF($E2=$B:$B, ROW($B:$B), ""), COLUMN(A1))
조건에 맞는 데이터의 행 값을 얻어 옵니다. E2인 펜
과 조건을 비교한 결과는 {FALSE, TRUE, FALSE, FALSE, TRUE, FALSE, …} 입니다.
SMALL(IF({FALSE, TRUE, FALSE, FALSE, TRUE, FALSE, ...},{1,2,3,4,5, ... },""), COLUMN(A1))
IF 조건에 따라, TRUE 인 것만 행 값을 갖고 나머지는 ""로 변환됩니다.
SMALL({"", 2,"","", 5, ...}), COLUMN(A1))
SMALL
함수를 사용하여 하나씩 얻어옵니다.
COLUMN(A1)
은 1을 반환하게 되고, {"", 2,"","", 5, ...}
이 중에서 가장 작은 것들중에 1번째 값을 반환합니다. → 2
따라서, INDEX($C:$C, 2)
가 실행되어, 1500
의 값을 얻게 됩니다.
참고
tags: 엑셀, excel, array, formula
'Application > Excel' 카테고리의 다른 글
[excel] 문자열 나누기 - 데이터 타입과 길이 분할 (0) | 2016.01.14 |
---|---|
[Excel] 시트 생성 VB (0) | 2014.12.23 |
[엑셀] 연속 데이터 채우기 (0) | 2013.01.11 |
[Excel] 엑셀 2007 에서 [개발도구] 탭 추가하기 (2) | 2012.11.04 |
[Excel] 1장. 엑셀 2007의 탄생: 스프레드시트의 역사 (0) | 2012.10.29 |
댓글