라벨이 match인 게시물 표시

match 함수의 -1 인수의 의미 (셀병합상태에서 수식)

이미지
역시  네이버 지식인 에서 누군가가 올려주신 해답에서 연구해볼만한 것입니다. 이렇게 데이타가 있을 때 이런 식으로 합계를 내야합니다. 문제는 G,H,I열이 셀병합이 되어있다는 점입니다. 셀병합이 안되어있다면 SUMIFS함수로 간단하게 해결됩니다만.... 여기서 어떤 분이 답을 달았습니다. 이렇게하면 셀병합을 해제하지 않아도 답을 구할 수 있습니다. =SUMIFS(D:D,A:A,INDEX($G$3:G13,MATCH("",$G$3:G13,-1)),B:B,INDEX($H$3:H13,MATCH("",$H$3:H13,-1))) 이 수식의 핵심은  INDEX($G$3:G13,MATCH("",$G$3:G13,-1)) 이 부분입니다. 일단 INDEX함수는 주어진 범위안에서 두번째 인수값 만큼의 위치에 있는 값을 보여줍니다. 그리고 두번째 인수는 MATCH함수가 반환하는 값인데, 해당 행의 G열에 있는 셀값(여기서는 G13)이 빈칸이면 그 위쪽에서 빈칸이 아닌 셀(여기서는 G12)에 있는 텍스트를 가져오는 역할을 합니다. 셀병합을 하면 제일 첫셀(여기서는 G3과 G12)에만 데이타가 들어있고, 나머지 병합된 부분에는 아무 데이터도 들어있지 않습니다. 그래서 엑셀에서 수식을 단순하게 만드려면 셀병합은 가급적 피하는 것이 좋습니다 . 아무튼, 여기서  INDEX($G$3:G13,MATCH("",$G$3:G13,-1)) 이 수식은 G3:G13의 범위 안에서  MATCH("",$G$3:G13,-1)) 의 값만큼의 위치에 있는 값을 구합니다. 그리고 MATCH("",$G$3:G13,-1) 이 수식이 핵심중의 핵심인데요, 그 중에서 -1이라는 마지막 인수입니다. match_type  동작   1 또는 생략 :   MATCH

[함수추가] INDEX함수 : 범위속에서 지정한 만큼의 위치에 있는 값 [오른쪽 열 기준으로 왼쪽열을 찾을때 (VLOOKUP함수의 반대 방향)]

이미지
INDEX함수가 상당히 자주 쓰이는 유용한 함수인데 작년에 빠뜨려서 이번에 보충합니다.  엑셀 도움말에는 다음과 같이 되어있습니다. INDEX ( array ,row_num,column_num) array     배열 상수나 셀 범위입니다. 배열에 행이나 열이 하나만 있을 때는 row_num이나 column_num 인수를 생략할 수 있습니다. 배열에 행과 열이 두 개 이상 있을 때 row_num이나 column_num만 사용하면 배열의 전체 행이나 열이 하나의 배열로 반환됩니다. row_num     값을 반환할 배열의 행을 선택합니다. row_num을 생략하면 column_num을 지정해야 합니다. column_num     값을 반환할 배열의 열을 선택합니다. column_num을 생략하면 row_num을 지정해야 합니다. 주의 row_num과 column_num 인수를 모두 사용하면 row_num과 column_num이 교차하는 셀의 값이 반환됩니다. row_num이나 column_num을 0으로 설정하면 전체 열이나 전체 행에 대한 값의 배열이 각각 반환됩니다. 배열로 반환된 값을 사용하려면 행에 대한 가로 셀 범위와 열에 대한 세로 셀 범위에 INDEX 함수를 배열 수식 (배열 수식: 하나 이상의 값 집합에 대해 여러 가지 계산을 수행하고 하나 또는 여러 개의 결과를 반환하는 수식입니다. 배열 수식은 중괄호 { } 안에 표시되고 Ctrl+Shift+Enter를 눌러 입력합니다.)으로 입력합니다. 배열 수식을 입력하려면 Ctrl+Shift+Enter를 누릅니다. row_num과 column_num은 반드시 배열에 있는 셀이어야 합니다. 그렇지 않으면 #REF! 오류 값이 반환됩니다. INDEX함수에는 사실, 배열형과 참조형이 있으며, 위의 도움말은 배열형에 대한 설명입니다. 하지만, 참조형을 지금 알 필요는 없을 듯하여 배열형만을 설명하겠습니다. 당분간은 INDEX함수를 쓰실때 다음 그림처럼 배열형이나 참조형중에 선택

1일1함수(17) MATCH함수: 찾는 데이터가 있는 위치를 알려준다

이미지
지난번에 엑셀로 이원목적 분류표 를 만들었습니다. 여러가지 경우의 수를 생각하면서 수식을 만들다보니 이렇게 고생할바에야 그냥 개수를 세는게 낫겠다는 생각도 들었지만, 써보니 편하다고 말씀하시는 분들이 많아 보람도 느낍니다. 사소한 몇가지 오류를 수정하여 이전포스트에 올려두었습니다. 그리고 또 한가지 느낀 점은, 엑셀을 거의 사용하지 않으시는 분들이 의외로 많다는 것이었습니다. 제가 이것을 만들때는 어느정도는 엑셀을 사용할 줄 아시는 분들을 대상으로 만들었기에, 엑셀을 처음 다뤄보시는 분들이 난감해 하는 것을 볼때 제가 편하자고 만든 것이 또 어떤 분에게는 불편함이 되는구나 하는 생각도 들었습니다. 그래서, 다음 버전업때는 엑셀 초보이신 분들도 큰 불편없이 사용할 수 있게 대대적으로 바꾸어 볼까 합니다. 예를 들면, 주관식 문항수와 객관식 문항수를 입력하면, 자동으로 그 수만큼 표가 만들어져서, 행을 삭제하거나 추가하는 수고를 덜어드리는 것이라든지, 아니면 HWP파일에서처럼 주관식,객관식 밑에 빈칸이 있어도 오류가 생기지 않도록 하는 방법을 연구한다던지 하는 것입니다. 혹시 좋은 생각이 있으시면 제안해주시면 고맙겠습니다. (P.S. 사실은 수식이 이렇게 복잡할 필요가 없었습니다. 엑셀의 기본적인 상식을 깜빡한 탓입니다. 다시 이원목적분류표를 다시 수정해서 올렸습니다.) 2009/04/18 - [컴퓨터/엑셀] - 엑셀로 작성한 이원목적 분류표 간단버전 이번주는 엑셀로 만든 이원목적분류표안에 있는 함수들을 알아보는 시간으로 하겠습니다. 사용된 수식들은 다음과 같습니다. 문항수합계의 수식은 =COUNTA(INDIRECT("R"&MATCH("유형",$A:$A,0)+2&"C"&COLUMN()&":R"&ROW()-1&"C"&COLUMN(),FALSE)) 문항배점합계의 수식은 =SUM(INDIRE

엑셀로 작성한 이원목적분류표

이미지
이원목적분류표를 엑셀로 만들어 보았습니다. 배점합이 100점이 맞는지 계산하거나 난이도 상중하가 몇개씩인지 세기가 귀찮아서 만들어 보았습니다. 엑셀 2007에서 제일 잘 작동합니다. 파일을 열어보고 혹시나 걱정하실 분이 있을까 미리 말씀해 드리는데, 이 안에 들어있는 데이타는 2005년에 실시한 시험데이타입니다. 유출되더라도 전혀 문제될 것이 없습니다. 이 안에 사용된 함수들중에서 지금까지 배운 것과 다음에 배울 것들이 많이 있습니다. SUMPRODUCT, INDIRECT, MATCH, COUNTA, LEN, N ... 과목마다 객관식이나 주관식의 문항수가 다르다는 문제를 해결하기가 제일 어려웠습니다. 수식이 복잡한 이유는 객관식문항이나 주관식 문항의 수가 바뀌어도 오류가 나지 않도록 하기위해서입니다. 따라서 객관식과 주관식사이에 공백을 두면 오류가 납니다. 주관식과 맨 아랫단 사이에 빈 행이 들어가 있어도 오류가 납니다. 이런식으로 객관식과 주관식 사이가 떨어져 있거나 주관식과 계 사이가 떨어져 있으면 이 부분이 이런 식으로 빨간색으로 변합니다. 오류가 났다는 의미입니다. 지금처럼 객관식,주관식,계 사이에 공백이 없이 연결되어있어야합니다. p.s. 2009/4/16 엑셀 2003에서는 설정한 서식과 수식에 일부 문제가 있어서 2003버전을 따로 만들었습니다. p.s. 2009/4/17 제목 줄을 추가하였을때 생기는 오류를 수정하였습니다. ( 2003 , 2007 버전 둘 다) p.s. 2009/4/18 지나치게 복잡한 수식을 제거하고, 최대한 단순하게 만든 버전 입니다.