목록엑셀 (213)
rand(life)
학교홈페이지에서 받은 수강신청 현황을 작업하기 좋게 정리하는 VBA. 이런 상태의 데이터가 이렇게 되게 만드는 방법이다. 반복작업이니 매크로로 기록하고, 몇군데 손만 봐주면 된다. 완성된 VBA 코드는 아래와 같다. Sub Macro2() Columns("A:E").Select Application.CutCopyMode = False Selection.Delete Shift:=xlToLeft Rows("1:12").Select Selection.Delete Shift:=xlUp Columns("K:K").Select Selection.Delete Shift:=xlToLeft Range("J1").Select ActiveCell.FormulaR1C1 = "강좌명" ActiveSheet.Range("a1")..
이전의 글에서, 우선 순위를 부여하여 동점자의 석차를 구하는 수식을 알아보았습니다. 위 그림에서, 학생4의 순위를 구하는 식은 아래와 같습니다. =IF(COUNTIF($F$2:$F$16,F5)>1,RANK(F5,$F$2:$F$16)+SUMPRODUCT(($F$2:$F$16=F5)*($H$2:$H$16>H5)),RANK(F5,$F$2:$F$16)) IF(COUNTIF($F$2:$F$16,F5)>1, 총점이 자신과 같은 사람의 수가 1보다 크면 (두명 이상이면)총점이 384점인 사람은 총 4명이므로, 참이다. ,RANK(F5,$F$2:$F$16)총점을 기준으로 한 자신의 순위에다가총점 기준 순위는 1위 (동점자는 4명) +SUMPRODUCT(($F$2:$F$16=F5)*($H$2:$H$16>H5))거기에 총..
오래전에 쓴 글에서 sumproduct함수를 설명하면서 동점자가 나왔을 때 추가의 기준을 적용하여 순위를 결정하는 방법을 설명한 적이 있습니다. (예를 들어, 총점이 같을 경우 국어 점수가 높은 학생이 순위를 높게 하는 경우) rank함수를 써서 순위를 구하고, 동점자의 경우 자신보다 총점이 같으면서 국어점수가 높은 학생의 수를 구해서 순위에다 더해주는 방법이었습니다. 참고: http://flogsta.tistory.com/418 그 글에서, 하나의 기준이 아니라, 제2,제3,제4의 기준을 주려면 어떻게 해야하나는 문제에 대해서는 답을 내놓지 못했습니다.(예를 들어, 총점이 같을 경우, 국어점수를 우선으로, 국어점수도 같으면 영어점수, 영어점수도 같으면 수학점수….) 물론 rank와 sumproduct를..
엑셀 파일을 만들어 다른 사람들에게 보내주면서, 시트의 셀 서식을 함부로 수정하지 못하게 막고 싶을 때 시트 보호하기 기능을 이용하실 수 있습니다. 시트탭을 마우스 오른쪽 클릭하시고 팝업 메뉴가 뜨면 "시트보호"를 클릭합니다. "셀서식"에 체크하고 암호를 입력합니다. (암호가 입력되지 않으면 다른 사람이 시트보호를 해제할 수 있으니 꼭 암호를 넣어야겠지요?) 한번 더 암호를 입력합니다. 그러면 셀서식을 수정할 수 있는 메뉴 (예를 들어 "병합하고 가운데 맞춤")가 활성화되지 않은 것을 볼 수 있습니다. 시트보호 되어있는 엑셀파일을 해제하는 방법도 마찬가지 순서로 하시면 됩니다. 시트탭을 마우스 오른쪽 클릭하고, "시트 보호 해제"를 클릭하면 암호가 걸려있는 경우 암호를 넣으라는 창이 뜹니다. 알맞은 암호..
예전에 어떤 분이 이런 질문을 하셨습니다. 감사합니다. 궁금한게 있습니다. ='[test.xlsm]sheet1'!A1+2 이런식으로 복사가 되어 오잖아요. 그냥 =sheet1!A1+2 이렇게 수식의 문자열 그대로 복사해 올 수 있는 방법은 없나요? 시트 전체를 복사하여 붙여넣기할 때 링크 주소가 자동으로 변경된다는 점을 설명하는 글에서 나온 질문이었고, "선택하여 붙여넣기"의 옵션에도 그런 항목은 없었기에 저는 이렇게 답변을 달았습니다. 그런 방법은 없는걸로 알고 있습니다. 일단 복사해 오신후, 찾기/바꾸기 기능을 이용해서 [test.xlsm]이라는 문자열을 지워버리는 방법은 있겠네요. 도움이 되시길..... 그런데, 오늘 다른 분이 여기에 댓글을 달아주셨습니다. [데이터-연결편집]에서 원본파일을 복사해..
지난 번에 쓴 글에서, 같은 조건의 문자열을 찾아 합치는 사용자정의 함수를 만드는 방법을 연구해 보았습니다. 제가 직접 만든 VBA코드가 아니고, 다른 분이 만드신 것을 올리고, 거기에 대한 설명을 제가 붙인 글이었습니다. 여기에 어떤 분이 질문을 하셨습니다. 그 내용을 요약하면, 신청 과목의 이름뿐만 아니라, 신청과목의 학점까지 조건을 주어서 표시할 수 있는가, 예를 든다면 신청과목중 3학점 이상되는 과목만 나열하도록 할 수 있는가 하는 내용이었습니다. 위의 그림에서 보듯이, 왼쪽의 표에는 신청과목과 학점이 표시되어있습니다. 여기서 학생별로 신청한 과목 중 3학점 이상만을 뽑아내어, 오른쪽 표에 보는 것처럼 신청과목을 나열하고 싶다는 것입니다. 결론을 이야기하면, 가능합니다. 그것도 아주 간단히 할 수..
어떤 분이 아무렇지도 않게 질문했습니다. "두 가지 조건을 OR 로 주어서 필터를 걸 수 있나요?" 실제로는 이것보다 좀 더 구체적으로 질문했지만, 어쨌든 같은 의미입니다. 위와 같은 표가 있을 때, 1반에 해당하는 학생만 걸러내는 것은 쉽습니다. 위 그림을 보시면, "반"에 필터가 걸려있는 것을 볼 수 있습니다. 또, 1반이면서 "해당자"에 O 표시 된 학생은 필터를 두 번 걸어주면 되므로, 역시 쉽습니다. 위 그림을 보시면, "반"과 "해당자"두 곳에 모두 필터가 걸려있는 것을 볼 수 있습니다. 이때, "1반"이라는 조건과 "해당자"라는 조건이 AND(논리곱) 으로 연결되었다라고 보통 표현합니다. 그런데, "1반"인 학생 모두와, 1반은 아닐지라도 "해당자"에 O 표시가 되어있는 학생 모두를 보고 싶..
일정 양식을 여러 사람들에게 배부하고 데이터를 수합하려는데, 보내주는 사람이 데이터를 입력하는데 그치지 않고 행이나 열을 추가하거나 삭제하여 전체 구조를 무너뜨리면 한군데 수합하는 사람이 그 모든 파일을 일일히 규격에 맞도록 수정해야하므로 매우 피곤한 일이 됩니다. 지정된 범위에만 데이터 입력이 가능하게 허용하고, 다른 범위에는 데이터를 입력하지 못하게 하고 싶습니다. 게다가, 다른 사람이 행이나 열을 추가/삭제하지 못하도록 하려면 어떻게 할까요? 아래 내용을 잘 읽어보세요. 먼저, 다른 사람이 시트 전체를 수정하지 못하도록 잠그려면 다음과 같이 합니다. 검토—(변경내용)—시트보호를 클릭하여 시트보호 해제 암호를 입력하고 확인합니다. 암호를 다시 입력하여 확인합니다. 이런 식으로 하면 암호를 모르는 다른..