본문 바로가기
WeekdayLife/excel

[엑셀] 조건에 맞는 값이 여러개일때 n번째 값 찾기

by JO_i 2022. 5. 20.

꽤 오래전에 배열 관련된 내용을 기재했었지만, 자주 안쓰니 까먹게 된다. 다시한번 정리 해둔다.

 

 

[엑셀] 배열수식 한방에 정리하기

엑셀 배열수식 한방에 정리하기 VBA를 쓰지 않는다면, 배열수식은 끝판왕같은 느낌이다. 나도 한동안 그랬었는데, 내부에서 어떤일이 벌어지고 있는지 이해하지 못했기 때문이라 생각된다. 알고

sunnybong.tistory.com

 

SMALL 함수

SMALL 함수를 처음 봤을 때, 사용하는 사람이 있었을까 싶었지만, 배열 순서를 확인할 때, 사용하는 함수라고 봐도 무방할 것 같다. 예를 들어, 조건의 결과가 {TRUE;FALSE;TRUE;FALSE;TRUE;FALSE} 로 뱉어졌다면, 이를 숫자로 바꿔주면 {1;FALSE;1;FALSE;1;FALSE} 이 될 것이고, 여기에 순서를 먹이면, {1;FALSE;3;FALSE;5;FALSE} 이런식이 될 것이다. 이 때, 두번째 작은 값을 찾는다고 하면 3이 되므로, 반환할 배열에서 3번째 인덱스 값을 받아오면 될 것이다.

 

뭔.. 헛소린가 하면....

차량열에 대한 조건을 코나로 주고 배열 처리를 하면 아래와 같은 배열값이 생긴다.

 

 

 

자, 이제 차량 열을 통해서, 1부터 영역의 수량만큼을 뱉어내는 배열을 만든다. ROW함수를 사용하해서 해당 행번호를 순서대로 만든 뒤에, INDEX함수로 첫번째 행번호를 찾고, 각 배열에서 빼준다음 1을 더해준다. (1을 빼주지 않으면, 0부터 시작된다.)

 

 

 

이제 IF함수로 TRUE인 경우에만 숫자를 넣도록, 위 두개의 수식을 연결 해준다. 

 

 

 

자 드디어, SMALL 함수를 사용할 때가 되었다. 위에 만들어진 {1;FALSE;FALSE;4;5;FALSE} 에서 두번째로 작은 값을 찾는 수식이다. SMALL(배열, K) 에서 K값이 몇번째 작은 값을 찾겠느냐는 뜻이다. 결과는 FALSE는 무시가 되고, 4가 두번째로 작은 값이므로, 4가 나오고, 더 이상 배열이 아니게 된다. 

 

 

 

INDEX함수를 사용해 찾을 배열을 선택하고, 4번째가 찍히도록 만들어놓은 수식을 ROW 위치에 넣어주면 끝이다.

 

 

 

어렵게 왔다. 좀 쉽게 할 수 있는 방법도 있을까?

AGGREGATE 함수가 있지만, 방식은 동일하다. 썩 나이스해지지 않는다. 답은 아래 그림처럼 동일하다. 

 

 

 

횡설수설한 느낌은 있지만, 이상 끝.