|
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値の使い方が不正です」と出ます。
どうしたらいいでしょうか?
Sub TEST3()
' 参照設定「Microsoft Active Data Object 2.x Library」
Dim cnn As ADODB.Connection
Dim rst As ADODB.Recordset
Dim hinmei As String
Dim tenmei As String
Dim keiyakusha As String
Dim c As Integer
Dim n As Integer
Dim t As Integer
Set cnn = New ADODB.Connection
cnn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=C:\Documents and Settings\週報.mdb"
cnn.Open
Set rst = New Recordset
rst.Open "累積", cnn
hinmei = ""
tenmei = ""
keiyakusha = ""
rst.MoveFirst
Do Until rst.EOF = True
c = c + 1
If keiyakusha <> rst.Fields("契約者名").Value Then
n = n + 1
' 行の変数を加算し必要項目を選択してセルにセット
Cells(n, 1) = rst.Fields("品名").Value
Cells(n, 2) = rst.Fields("店名").Value
Cells(n, 3) = rst.Fields("契約者名").Value
Cells(n, 4) = c
t = t + 1
hinmei = rst.Fields("品名").Value
tenmei = rst.Fields("店名").Value
keiyakusha = rst.Fields("契約者名").Value
c = 0
End If
rst.MoveNext
Loop
rst.Close
Set rst = Nothing
cnn.Close
Set cnn = Nothing
End Sub
|
|