[2-4 풀이]
아래와 같이 누적합계는 앞에 셀을 절대화시켜야지 다음셀로 옮겨갈수록 누적되면서 더해진다는 원리가 있다.
if중첩문을 사용하여 코드번호 첫번째 문자에 따른 값을 도출해냄
IF(LEFT(K17,1)="a","자동차",IF(LEFT(K17,1)="b","자전거","오토바이"))
countif문을 사용하여 앞에 누적합계를 사용한 공식처럼 셀을 절대화시켜 누적개수를 구한다.
COUNTIF($K$17:K17,LEFT(K17,1)&"*")
조건식을 적을때 주의할 점은 함수와 특수문자를 결합시키려면 특수문자를 ""따옴표로 문자화시킨 다음 &로 함수와 특수문자사이를 결합시키면 된다.
[문제2-8 풀이]
=IF(C24<120,TEXT(ROUNDUP(C24/60,0)-1,"#시간"),TEXT(ROUNDUP(C24/60,0)-1,"#시간") &" "& MOD(C24,60)&"분")
roundup을 이용해서 시간을 구해보자
c24/60해서 자리수올림을 해야 시간이 나오는데 roundup은 소수점이 작아도 무조건 자리수가 올라가는 함수라서 뒤에 -1을 해줘야한다.
mod()함수는 몫과 수를 나눗셈을 한 나머지를 반환하는 함수이기에 분을 출력할때 사용해준다.
3.최종적으로 if문을 완성한 다음 text()함수로 format을 하여 뒤에 시간,분을 붙여준다.
[문제2-9 풀이]
여기서 주의할 점은 배열수식에서 열을 참조할땐 무조건 열 전체를 참조해야한다
//맞는답
=HLOOKUP(LEFT($J$24:$J$37,1),$Q$23:$S$24,2,0)
//답은 같지만 전체열을 참조안했으므로 틀린수식이다.
=HLOOKUP(LEFT(J24,1),$Q$23:$S$24,2,0)
[문제2-10 풀이]
frequency함수는 구간끝을 기준으로 값을 구하기 때문에 구간끝만 범위지정해준다.
그런데 왜 구간끝만 기준으로 잡을까?
FREQUENCY 함수는 구간별 개수를 구하는 함수로서 ~까지의 개수를 구하게 됩니다
따라서 시작값과 끝값 범위가 모두 있을 때는 끝 범위를 참조 해 주셔야 ~까지의 개수가 구해집니다
[풀이 4-2]
근태관리폼에서의 리스트를 '기타작업-3'시트에 있는 표로 나타내려면 list,listindex를 사용해야한다.
여기서 listindex는 부서list에 있는 리스트에 있는 행을 눌렀을때의 번호를 기억하는 함수이고, list는 list에 입력과 행과 열에 맞는 값을 출력해주는 함수이다.
Private Sub Cmd입력_Click()
입력행 = Range("b4").CurrentRegion.Rows.Count + 4
참조행 = List부서.ListIndex
Cells(입력행, 2) = List부서.List(참조행, 0)
Cells(입력행, 3) = List부서.List(참조행, 1)
Cells(입력행, 4) = List부서.List(참조행, 2)
Cells(입력행, 5) = Txt성명
Cells(입력행, 6) = Txt출근일수
Cells(입력행, 7) = Txt지각
Cells(입력행, 8) = Round((Val(Txt출근일수) * 10) - (Val(Txt지각) * 5), 0)
End Sub