라벨이 indirect인 게시물 표시

셀값과 같은 시트이름을 찾아 수식에 사용하기

이미지
오늘 어떤 선생님에게서 전화가 왔습니다. 학생별로 시트가 있고, 그 시트에 학생의 성적이 있는데, 별개의 시트에서 학생의 이름을 입력하면, 그 학생의 이름과 같은 시트를 찾아 그 시트의 특정셀값이 출력되게 할 수 없느냐는 질문이었습니다. 정교하게 짜려면 VBA를 사용해야할 것 같습니다만, 간단히 하려면 다음과 같이 가능합니다.  그림에서처럼, 학생의 이름별로 시트가 별도로 있고, 그 학생의 시트안에는 각 기간별 성적이 들어있습니다. 그리고, 학생의 시트마다 평균 성적을 구해둡니다. 여기서는 7행에 평균성적에 해당하는 셀들이 있군요. "평균"이라는 이름의 시트에 와서, 다음과 같이 수식을 입력합니다. =HLOOKUP(B$1,INDIRECT($A2&"!C1:F7"),7,0) --------답만 알기를 원하신다면 이 이후는 읽지 않으셔도 됩니다.--------- 사실, Kevin학생의 국어평균점수는 이미 Kevin시트의 C7셀에서 구해두었기때문에 =Kevin!C7 이라고 간단하게 구할 수 있습니다. 그런데 굳이 복잡한 함수를 쓴 이유는 뭘까요? 엑셀의 함수를 사용할때는 많은 양의 데이타를 다룬다는 것을 항상 염두에 두어야합니다. 그래서  함수를 아래로, 오른쪽으로 끌어채우기했을때도 제대로 작동할 수 있도록 만들어야합니다 . 그렇지 않고 모든 셀마다 함수를 달리 주어야한다면 엑셀을 사용하는 의미가 없는 것이지요. =Kevin!C7 이라는 수식을 아래로 끌면 오류가 날것입니다. Kevin시트가 아니라 Mike시트에서 셀을 찾아야하는데 그걸 표현해 주지 못하니까요. 따라서 올바른 수식을 만들려면 Kevin이나 Mike와 같은 시트이름을 그대로 사용하지 말고, 수식으로 표현해야 할 것입니다. 또, =Kevin!C7 이라는 수식을 오른쪽으로 끌면 차례대로 =Kevin!D7 =Kevin!E7 =Kevin!F7 의 수식이 만들어질 것이고, 각각 영어, 수학, 과학의 평

1일1함수 (19) LEN함수 : 문자열의 길이 구하기

이미지
계속해서 이원목적분류표에 있는 함수중 다중답의 개수를 구하는 수식을 살펴보겠습니다. 수식은 다음과 같습니다. =SUMPRODUCT(N(LEN(INDIRECT("C"&MATCH("유형",A:A,0)+2&":C"&MATCH("주관식",A:A,0)-1))>1)) LEN함수와 N함수를 제외하고는 모두 배운 함수입니다. 여기서 N함수는 내일 설명하겠지만, 여기서는 굳이 없어도 됩니다만 배열계산을 할때 배열이 하나밖에 없으면 집어넣는 것이 오류 가능성을 줄여준다고 합니다. 오늘은 LEN함수에 대해 배우겠습니다. LEN함수는 문자열의 길이를 반환하는 함수입니다. LEN ( text ) text   길이를 확인하려는 문자열입니다. 공백도 문자로 계산됩니다. 아주 간단하죠? ^^* 위에서처럼, 영어, 숫자, 한글, 구두점 모두 한 개로 계산하여 나타냅니다. 이원목적분류표의 다중답의 개수를 구하는 위의 수식에서 INDIRECT부분을 계산하여 실제 셀 주소로 바꾸고 보면, C8:C37 이 됩니다. 즉, 위의 수식은 다음과 같습니다. =SUMPRODUCT(N(LEN(C8:C37)>1)) 즉, C8:C37의 범위중에서 문자열의 길이가 1보다 긴 셀의 개수를 구하는 것입니다. 정답이 1,2,3,4,5중의 하나라면 LEN함수를 거친 결과값은 1이 되겠지만, 정답이 다중답이라면 한자리 숫자보다 더 많은 글자가 들어가야하므로 길이가 1보다 커지겠네요. 예를 들어, C8셀은 1번 문제의 정답을 보여주며, 정답은 "2,4"라면 =LEN(C8) 의 결과값은 얼마일까요? 예, 3입니다. LEN함수는 다음에 한번 정리하게 될 문자열 함수들과 함께 사용할때 유용한 함수입니다. 2009/04/15 - [컴퓨터/엑셀] - 엑셀로 작성한 이원목적분류표 2009/04/21 - [컴퓨터/엑셀] - 1일1함수 (18

1일1함수 (18) INDIRECT 함수 : 셀주소 지정을 간접적으로

이미지
지난번에 만들었던 이원목적분류표 에서 가장 수식이 긴 것은 다음과 같은 수식이었습니다. =COUNTA(INDIRECT("R"&MATCH("유형",$A:$A,0)+2&"C"&COLUMN()&":R"&ROW()-1&"C"&COLUMN(),FALSE)) 이것은 평가목표와 난이도를 표시한 것의 개수를 세는 수식인데, 그냥 간단히 =COUNTA($G$8:$G$42) 라고 표시하면 안되냐고 생각하시는 분이 있을것입니다. 예, 그렇게해도 해당셀에 숫자나 문자가 입력되어있는 셀의 개수를 세는 것이니까 같은 역할을 합니다. 하지만 제 생각에는 그렇게하면 8행부터 42행까지의 개수는 셀 수 있지만, 행을 몇 개 추가하거나 삭제하여 행의 번호가 바뀌면 수식을 일일이 다시 고쳐야한다고 생각했었습니다. 하지만 이것은 완전히 잘못된 생각으로, 일단 수식으로 정해놓은 범위는 행번호를 오른쪽 클릭하여 행전체를 추가하거나 삭제하면 수식이 자동으로 수정된다 는 사실을 깜빡한 것이었습니다. 즉, 다음과 같이 평가항목중 "지식"에 해당하는 문항이 몇 개인지 합산하여 보여주는 G43셀의 수식을 다음과 같이 입력하고, COUNTA($G$8:$G$42) 주관식 문항의 수가 5개가 아니라 8개이므로, 3개의 행을 더 추가하고 싶습니다. 이때 여기서보듯이 39,40,41이라고 되어있는 행숫자를 드래그하여 세 개의 행전체를 선택하고, 오른쪽 클릭하면 보시는 것과 같은 메뉴창이 뜹니다. 여기서 "삽입"을 선택하면 39,40,41행자리에 새로운 행이 만들어지고 기존의 행들은 뒤로 밀립니다. 여기서 아까 수식을 입력했던 G43셀은 G46셀로 밀려갔네요. 여기의 수식을 살펴보면 =COUNTA($G$8:$G$45) 로 수식이 자동으로 바뀌어 있음을 알 수 있습니다. 따

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

이미지
이원목적분류표를 엑셀로 만들어 보았습니다. 배점합이 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 지나치게 복잡한 수식을 제거하고, 최대한 단순하게 만든 버전 입니다.