rand(life)

INDEX 함수에서 몰랐던 기능 본문

컴퓨터/엑셀

INDEX 함수에서 몰랐던 기능

flogsta 2016. 12. 29. 10:20

"범위&범위"라고 주면 범위끼리 문자열을 합하여 배열을 만든다


예를 들어,

이런 형태의 데이터를 

이렇게 정리하기 위해 수식을

J3셀에서는 

=INDEX($B$3:$D$14,MATCH($H3&$I3,INDEX($A$3:$A$13&$A$4:$A$14,),0),COLUMNS($J3:J3))

M3셀에서는

=INDEX($B$3:$D$14,MATCH($H3&$I3,INDEX($A$3:$A$13&$A$4:$A$14,),0)+1,COLUMNS($M3:M3))

이렇게 준다.


여기서 가운데 있는 

MATCH($H3&$I3,INDEX($A$3:$A$13&$A$4:$A$14,),0)

이 수식의 의미는 다음과 같다

MATCH($H3&$I3

 H3&I3의 값의 위치를 찾는데

H3&I3= 김태희서울

  INDEX($A$3:$A$13&$A$4:$A$14,)

A$3:$A$13와 $A$4:$A$14의 문자열을 합친 배열 중에서 찾고

 김태희서울,장동건수원,유지태인천,아유미일본,유승호부산,유리서울

 0

 비슷한 글자가 아니라 정확히 일치하는 글자를 찾아라

 


이 중에서 

INDEX($A$3:$A$13&$A$4:$A$14,) 여기를 잘 보면 맨 뒤에 콤마만 있고 그 뒤가 없다

바로 INDEX 함수의 설명 중 다음 사항에 해당한다.

주의

    reference와 area_num으로 특정 범위가 선택된 후에는 row_num과 column_num이 특정 셀을 선택합니다. 즉, row_num 1은 범위의 첫째 행이고, column_num 1은 첫째 열의 방식으로 선택됩니다. INDEX 함수로 반환되는 참조는 row_num과 column_num이 교차되는 위치입니다.

    row_num이나 column_num을 0으로 설정하면 전체 열이나 행에 대한 참조가 각각 반환됩니다.


즉, INDEX함수는 주로 첫번째 인수인 배열속에서 두번째 인수에 있는 숫자만큼의 행, 세번째 인수에 있는 숫자만큼의 열의 위치에 있는 값을 반환하지만, 

지금처럼 배열뒤에 0인 경우, (위에서는 0도 쓰지 않고 쉼표만 찍었다. 쉼표만 찍는 경우 0으로 간주한다)

INDEX($A$3:$A$13&$A$4:$A$14,)는 A3:A13의 문자열과 A4:A14의 문자열을 합쳐서 

김태희서울,장동건수원,유지태인천,아유미일본,유승호부산,유리서울 이라는 배열을 만들어낸다는 의미이다.

알아두면 매우 유용한 팁인듯하다.


하지만 의문인것은, A3:A13의 배열은 "김태희,서울,장동건,수원..."이고 A4:A14의 배열은 "서울,장동건,수원,유지태..."인데

이 둘을 합하면(&) "김태희서울,서울장동건,장동건수원,수원유지태..." 가 아니라

어째서 "김태희서울,장동건수원,...."이 되느냐하는 것이다. 

좀 더 연구가 필요하다


p.s 12/30

이제 알았다! 

엑셀에 있는 "수식 계산"기능을 이용해서 잘 살펴보면 진작 알았을텐데...

엑셀에서는 실제로 "김태희서울,서울장동건,장동건수원,수원유지태..." 로 계산하고 있었는데 내 머릿속에서만 "김태희서울,서울장동건,장동건수원,수원유지태..." 이라고 생각하고 잇었다. 

"아유미일본"의 국어점수를 예로 들면, B9셀에 있으므로 $B$3:$B$14의 배녈에서는 7번째 값을 가져와야한다. 

A3:A13의 배열과 A4:A14의 배열을 합친 것은

김태희서울, 서울장동건,장동건수원,수원유지태,유지태인천,인천아유미,아유미일본...

으로, 여기서 아유미일본은 7번째에 있다! 

그러므로 이 수식은 전혀 이상할 것이 없는 것이다