목록컴퓨터/엑셀 (226)
rand(life)
한 셀의 내용을 그 다음 4칸에 복사하는 작업을 반복한다. 빈셀이 나타나면 중지한다. Sub Macro3() Do While ActiveCell.FormulaR1C1 "" '빈셀이 아닌동안 아래 열을 실행하고 빈셀이면 빠져나간다 Selection.Copy '현재셀을 복사 ActiveCell.Offset(1, 0).Range("A1").Select '한칸 아래로 이동 Range(Selection, Selection.End(xlDown)).Select '다음 내용이 있는 곳까지 선택 ActiveCell.Range("A1:A4").Select '4개의 칸을 선택 ActiveSheet.Paste '선택한 4개 칸에 복사해넣기 ActiveCell.Offset(4, 0).Range("A1").Select '다음 네..
이제 조금 더 알것 같다. 자연계 학생의 언어성적 평균을 내는 방법이다. =SUMPRODUCT(('6월종합'!$A$2:$A$378=자연)*('6월종합'!$F$2:$F$378))/SUMPRODUCT(('6월종합'!$A$2:$A$378=자연)*('6월종합'!$F$2:$F$3780)) 전반부는 =SUMPRODUCT(('6월종합'!$A$2:$A$378=자연)*('6월종합'!$F$2:$F$378)) A열은 인문/자연을 구분하는 열이고 F열은 언어점수이다. 따라서, A열에서 자연이라고 표시된 것들의 언어점수의 총합이 된다. 후반부는 SUMPRODUCT(('6월종합'!$A$2:$A$378=자연)*('6월종합'!$F$2:$F$3780)) ('6월종합'!$F$2:$F$3780)) : 이 부분의 의미는, 언어점수가 0점이..
출처: 오피스튜터 http://www.officetutor.co.kr/board/Dtype/bfrmvw.asp?f_tn=Dqa_excel_n2&f_bno=97770&page=&fchk=brd_title&fval=%BC%F8%C0%A7 반별로 성적을 모으면, 인문, 자연계가 섞여 있습니다. 이럴떄, 인문 자연 따로 시트를 만들어 계열별 석차를 낼 수도 있습니다만, 한 시트안에서 수식을 이용해서 해결하고자 합니다. 원래 순위를 구하는 함수는 rank입니다. 인문에 해당하는 범위(I4~I8)까지만 rank함수속에 넣으면 인문계안에서만 순위를 구할 수 있습니다. 그런데 문제는 rank함수를 쓰면 그림처럼 국어점수를 기준으로 정렬을 다시했을때, 인문자연이 섞여버려서 전혀 엉뚱한 결과가 보여진다는 것입니다. 그래서..
이전에 만들었던 파일을 학년, 반, 번호의 순으로 소트하면 위와 같이 에러가 가득한 페이지를 보게 됩니다. 그 이유를 알기위해서는 이전 상태의 화면을 다시 봅시다. 여기서 A6셀에는 2라는 숫자가 표시되어있지만, 이 셀을 클릭해보면 다음과 같은 수식이 들어있는 것을 알 수 있습니다. =MID($E3,SEARCH("학년",$E3)-2,2) 즉, 이대로 복사해서 붙이면, "2"라는 내용이 붙는 것이 아니라 오른쪽으로 세칸, 위로 세 칸위에 있는 셀에서 글자를 가져온다는 수식이 붙는 것이므로, 오른쪽으로 세칸, 위로 세칸위의 셀에 그런 글자를 찾다가 없으니까 오류가 나는 겁니다. 이전 매크로 작업이 끝난 다음에, 소트하기전에 다음 작업을 수행하여야합니다. 학년, 반, 번호, 이름을 추출해내는 수식이 들어있는 ..
앞에서 작업을 하여 학생 개인의 성적과 개별 답안지에 표기한 정답이 같은 행에 배열이 되도록 했습니다. 그런데 이 성적이 누구의 것인지 모른다면 반쪽짜리 통계밖에 안되겠죠. 그래서 성적 행 앞에 반, 번호, 이름을 넣도록 하겠습니다. 처음부터 학년, 반, 번호를 별도의 셀에 넣어주었으면 좋았을텐데, 지금처럼 E3셀에 몰아서 다 입력해놓으니 여기서 반, 번호를 추출해 내는게 쉽지는 않아보입니다. 물론, 수작업으로 한명씩 입력하는 것은 생각조차 할 수 없지요^^ 일단 답부터 보겠습니다. =MID($E3,SEARCH("학년",$E3)-2,2) =MID($E3,SEARCH("반",$E3)-3,2) =MID($E3,SEARCH("번",$E3)-3,2) =MID($E3,SEARCH("번",$E3)+2,6) 맨위에서..
모의고사 성적 일람표등에서 통계를 만들때, 모든 반 학생들의 명렬표에서, 1반 학생들중 90점 이상 학생들이 몇명인지를 알고 싶다면 어떻게 하면 될까? 간단하게는 모든 학생들을 정렬한 다음, 90점 이상되는 학생들 중 1반 학생이 몇명인지를 세보면 될 것이다. 하지만, 이방법은 수작업으로 해야하므로 불편하고 6,9,12월 모의고사에 연속적으로 데이타를 뽑아서 그래프를 만들려고하면 수작업이 더 들어간다. 수식을 사용하여 자동으로 하고 싶다면? 함수 sumproduct를 이용한다. 이 함수는 배열수식을 이용하는 것인데, 다른 사람이 만들어 놓은 것을 보고 따라 해보긴 했지만 이해가 안되는 부분이 있다. 다음과 같이 엑셀에서 되어있다면 반 번 점수 1 1 80 1 2 81 1 3 82 1 4 83 1 5 84..
1에서 4까지의 임의의 수를 출력한다 0에서 1까지의 임의의 수를 출력하는 함수는 RAND()이다. ()안에 아무것도 안 들어간다. 이대로는 소수가 나오니까 정수로 만들기위해 반올림함수 ROUND를 사용한다. ROUND(a1,0) 이라고하면 a1셀의 숫자를 소수점 첫째자리에서 반올림한다. 즉, 정수로 나온다. =ROUND(4*RAND(),0) 이렇게 하니까 0에서 4까지가 출력된다. =ROUND(3*RAND()+1,0) 이렇게 하면 1에서 4까지의 임의의 수가 출력된다.