|
▼さつき さん、皆さん、こんばんは。
私もSQLを使用した方が簡単かな?と思いますが・・・。
それはともかく・・・。
>VBA初心者です。初めて投稿させて頂きます。
>以下のような集計を行いたいのですが、どのようにしたらいいでしょうか?
>
>店名 契約者名 品名
>A店 佐藤 IBM
>B店 神田 NEC
>C店 広田 FUJI
>A店 佐藤 NEC
>A店 中川 FUJI
>C店 広田 SHARP
>B店 神田 IBM
>A店 中川 SONY
>B店 大村 SHARP
>とあったとして、集計結果には、契約者ごとの購入数の数値だけでなく、それぞれの品名もセルに一覧表示しなくてはなりません。(今はその部分のコードは考え中です。)
>
>A店 佐藤 IBM、NEC
> <件数> 2
> 中川 FUJI、SONY
> <件数> 2
> 計 4
>B店 神田 NEC、IBM
> <件数> 2
> 大村 SHARP
> <件数> 1
> 計 3
>C店 広田 FUJI、SHARP
> <件数> 2
> 計 2
>
>下記のようにすると、店名の横に印刷される集計データは
>ひとつ前の店の数字になってしまいます。
>そこで、
>Cells(n, 1) = rst.Fields("品名").Value
>の=以降のところを
>= hinban
>などとすると、こんどは値は正しいのですが、「null値の使い方が不正です」と出ます。
>どうしたらいいでしょうか?
↑この件ですが・・・。
別の媒体からアクセスのテーブルにデータをコピーしたものを運用すると
この手の現象が良く起こりますが・・・。
Null値とは、
「バリアント型 (Variant) に有効なデータが入っていないことを示す値」
となっています。hinbanという変数をVariant型にしてもエラーは起きませんが、
通常は、代替データに置き換えますけどね。
AccessだとNZ関数がありますよね?
私は、
hinmei = nz(rst.Fields("品名").Value, "")
'======================
Function nz(chkdata, cnvdata)
If IsNull(chkdata) Then
nz = cnvdata
Else
nz = chkdata
End If
End Function
なんてよく使いますが。
又は、Sql
select iif(isnull(品名),"""",品名) as 品名・・・・
なんて方法もあると思いますが・・・。
検討してみて下さい。
|
|