|
* 답변하시는 분들께 도움이 되도록 자신의 환경을 아래 항목 옆에 기재해 주세요.
- 액세스 버전(95,97,2000,xp,2003,2007): 2019
* 아래줄에 질문을 작성하세요 >>
엑셀로 관리하던 볼링점수를 엑세스로 해보려고 시작한 초보입니다.
평균값을 내려고 하는데,
행기본값을 없음으로하면 평균계산이 안되고,
기본값을 0으로 하면, 빈행이있을때 잘못된값이 나오네요....
평균: Avg([1game][2game][3game][4game])
이렇게해도 안되는데,
이곳에 검색을해도 안나오기에 답답함에 여쭤봅니다.
==============[아띠님 글에 대한 답변입니다]==============
값이 있는 필드 개수를 계산하여 총점에서 나누기 하시면 됩니다.
====쿼리에서
게임수: IIf(Nz([1game])>=1,1,0)+IIf(Nz([2game])>=1,1,0)+IIf(Nz([3game])>=1,1,0)+IIf(Nz([4game])>=1,1,0)
총점: (Nz([1game])+Nz([2game])+Nz([3game])+Nz([4game]))
평균: (Nz([1game])+Nz([2game])+Nz([3game])+Nz([4game]))/(IIf(Nz([1game])>=1,1,0)+IIf(Nz([2game])>=1,1,0)+IIf(Nz([3game])>=1,1,0)+IIf(Nz([4game])>=1,1,0))
필드가 숫자이고 기본값이 0이 필수로 들어간다면 nz함수는 없어도 됩니다.
====폼에서
-테이블의 총점 평균 필드는 숫자로 바꾸셔야 합니다.
Private Sub 총점_GotFocus()
Dim i As Integer
Dim j As Integer
Me.총점 = Nz(Me.[1game]) + Nz(Me.[2game]) + Nz(Me.[3game]) + Nz(Me.[4game])
j = 0
For i = 1 To 4
If Me(i & "game") > 0 Then
j = j + 1
End If
Next i
Me.평균 = (Nz(Me.[1game]) + Nz(Me.[2game]) + Nz(Me.[3game]) + Nz(Me.[4game])) / j
End Sub
====테이블에서
-테이블 계산필드는 nz 함수가 안됩니다. 따라서 각 게임 점수 필드의 기본값은 0으로 설정하셔서 빈칸이 되지 않도록 하신다음 아래식으로 하시면 됩니다.
([1game]+[2game]+[3game]+[4game])/(IIf([1game]>0,1,0)+IIf([2game]>0,1,0)+IIf([3game]>0,1,0)+IIf([4game]>0,1,0))
그러나 특별한 경우가아니면 테이블에서 입력,계산,출력 같은 작업은 하지 않습니다. |
|