목록사용자정의함수 (6)
rand(life)
지난 번에 쓴 글에서, 같은 조건의 문자열을 찾아 합치는 사용자정의 함수를 만드는 방법을 연구해 보았습니다. 제가 직접 만든 VBA코드가 아니고, 다른 분이 만드신 것을 올리고, 거기에 대한 설명을 제가 붙인 글이었습니다. 여기에 어떤 분이 질문을 하셨습니다. 그 내용을 요약하면, 신청 과목의 이름뿐만 아니라, 신청과목의 학점까지 조건을 주어서 표시할 수 있는가, 예를 든다면 신청과목중 3학점 이상되는 과목만 나열하도록 할 수 있는가 하는 내용이었습니다. 위의 그림에서 보듯이, 왼쪽의 표에는 신청과목과 학점이 표시되어있습니다. 여기서 학생별로 신청한 과목 중 3학점 이상만을 뽑아내어, 오른쪽 표에 보는 것처럼 신청과목을 나열하고 싶다는 것입니다. 결론을 이야기하면, 가능합니다. 그것도 아주 간단히 할 수..
지난번에 다루었던 "통합"기능은, 데이터가 한 줄 (예를 들면 A열)에만 나열되어있어야 가능한 방법이었다. 위의 그림처럼 여러 열에 걸쳐 데이터가 입력되어있을 때, 여러시트와 여러 열에 걸쳐 입력되어있는 특정인의 금액을 합산하려면 어떻게 할까? 일반 함수나 기능으로는 안될 것 같고, VBA를 이용해야할 것 같다 일단, 합계를 낼 시트의 이름을 total이라고하고, 맨 왼쪽에 놓는다. A열에 각 사람의 이름이 나열되고, C열에 금액을 입력할 예정이다. 책을 찾아보고 검색해서 연구한 끝에 매크로로 만든 것은 다음과 같다. Private Sub Macro1() Dim n, j As Long Dim i As Integer Dim k As Integer Dim m As Integer Dim t As Integer..
다음 그림과 같은 작업을 하고 싶을 때가 있습니다. 왼쪽처럼 학생들의 신청과목을 한 열에 한 과목씩 일렬로 받아둔 것을 오른쪽 그림처럼 한 학생의 모든 신청과목을 한 줄에 입력하는 작업입니다. VLOOKUP함수를 써서 10101을 찾아 한 칸 오른쪽에 있는 값을 불러오면, 맨 위에 있는 값만 가져오기 때문에 "영어"만 출력됩니다. 앞으로 엑셀에서 VLOOKUP함수가 두 번째, 세번째 일치하는 값도 찾을 수 있도록 옵션을 제공한다면 간단히 해결되겠지만, 그 전에는 이런 작업을 하려면 VBA를 사용해야할 듯 합니다. 다음은 ConcatText라는 사용자정의 함수를 만드는 VBA입니다. Alt + F11 하셔서 삽입-모듈에서 다음을 붙여넣으세요. Function ConcatText(ByVal 범위 As Ran..
점수를 구간으로 나누어 각 구간마다 등급을 매기고 싶을 때가 있습니다. 지난번에 소개한 것처럼 사용자정의함수를 이용하는 방법도 있습니다만, 좀 더 간단한 방법을 보여드리려고 합니다. 바로 vlookup 함수를 사용하는 방법입니다. VLOOKUP함수의 구문중 다음 주의사항을 한번 보시죠. VLOOKUP(lookup_value,table_array,col_index_num,range_lookup) range_lookup 정확하게 일치하는 값을 찾을 것인지, 근사값을 찾을 것인지를 결정하는 논리값입니다. TRUE이거나 생략되면 정확한 값이나 근사값을 반환합니다. 정확하게 일치하는 값이 없으면 lookup_value보다 작으면서 그 다음으로 가장 큰 값을 반환합니다.table_array의 첫 번째 열 값은 오름..
먼저, 이것도 제가 만든 것이 아니라는 것을 밝힙니다. 출처: http://kin.naver.com/detail/detail.php?d1id=1&dir_id=1050202&eid=5ARZk66HcEzE0Zn1M6DZk7j0g2hvr0h7 하지만 아주 기초적인 내용으로 봐서, 엑셀관련 자격증 수험서에 나오는 예제가 아닌가 합니다. 다름 아니라, 점수가 90점 이상이면 A, 80점이상이면 B, 70점 이상이면 C, 그 아래는 D로 등급을 매기고 싶을때가 있습니다. 지난 글에서 각 급수마다 점수를 부여하는 것을 HLOOKUP함수를 이용해 수식을 만든적이 있습니다. 하지만 반대로, 학생들의 점수에 따라 급수를 부여한다면 어떻게 해야할까요? 이번에도 HLOOKUP함수를 이용해서 만들어보았습니다. 100점을 받은 ..
먼저, 이 것은 제가 만든 것이 아닙니다. 출처를 아래에 밝힙니다. http://kin.naver.com/detail/detail.php?d1id=1&dir_id=1050202&eid=Cldup1sGgmV5wXb3Ktt4CKnryRloYMd0&qb=x9Gx2yC757/rwNogwaTAxyDH1Lz2&enc=euc-kr 사용자정의함수란, 엑셀에서 제공하고 있지 않은 기능을 가진 함수를 VBA를 이용하여 사용자가 직접 정의하여 만드는 함수입니다. 따라서 자기가 쓰고자하는 목적을 구현할 수 있기에 편리합니다만, VBA를 다룰 줄 알아야하기때문에 상당히 고급의 경지에 올라야합니다. 저도 VBA는 잘 모르기 때문에, 여기서는 위의 출처에 나온 내용만을 따라하도록 하겠습니다. 참고로, 한글,영어,숫자등이 섞여있는데..