| Access Tips by pPoy |
| Module | データの数量を集計する関数 《Sum関数の横方向版》 (Access97,Access2000,Access2002) | ||
|---|---|---|---|
|
Access には標準で、データを合計する集計関数があります。 ただし、これは Excel で言えば縦計を算出するものです。 クエリなどで、フィールド内に入力済みの項目の横計を出したい場合は、ちょっと困ります。 普通は全てのフィールド名を指定して、「+」で繋げて計算させます。 ところがデータの無いものが間に挟まると、計算結果も Null となってしまい、計算してくれません。 これを避けるためには Nz関数を使用して、Null をゼロに変換します。 例: Nz([国語],0) + Nz([理科],0) + Nz([社会],0)これで計算はできますが、式がやたら長くなってしまいます。 仕方がないので集計が簡単に出来る関数を作ってみました。 以下のコードを標準モジュールに貼り付けてください。 | |||
Function ItemSum(ParamArray ItemEtc()) As Double
'データのある項目の数量を集計(Sum関数の横方向版)
'文字列としての数字も数値として集計
'例: ItemSum([国語],[理科],[社会])
'配列を丸ごと渡すことも可
'2003/11/15 pPoy
Dim cnt As Double
Dim cntA As Variant
Dim i As Variant, j As Variant
cnt = 0
cntA = ItemEtc()
For Each i In cntA
If IsArray(i) Then
'配列の場合
For Each j In i
If IsNumeric(j) Then cnt = cnt + j
Next
Else
If IsNumeric(i) Then cnt = cnt + i
End If
Next
ItemSum = cnt
End Function
| |||
≪使いかた≫
ItemSum([国語],[理科],[社会])
のように指定します。 中に入れる項目数は何個でも大丈夫ですが、必ず 「 , 」 半角のカンマでつなげてください。 コード内では、以下のように 直接指定してもOKです。(配列変数で渡すことも出来ます。) ItemSum("12","10",100,"",Null)ItemSum(Array("12","10",100,"",Null))ItemSum(Array("12","10",""),Array(100,Null))この場合どれも結果は、「122」 となります。 | |||
≪注意≫
| |||
☆ 感想をお知らせください (直接ブラウザから送信致します。メールアカウントは不要です。)
form mail はこちら
Copyright(C) pPoy 2003