|
▼kobasan さん:
おはようございます。
夜遅くまで申し訳ございませんでした。
集計が出来ました。
本当に有難うございます。
お伺いしたいのですが、
ReDim a(6)
> a(0) = vnt(i, 1)
> a(1) = vnt(i, 2)
> a(2) = vnt(i, 3)
> a(3) = vnt(i, 4)
> Else
> a = dic(vnt(i, 1))
> End If
> a(4) = a(4) + vnt(i, 5)
> a(5) = a(5) + vnt(i, 6)
> a(6) = a(6) + vnt(i, 7)
> dic(vnt(i, 1)) = a
> Next i
の式は、どういう事を指令しているのか
教えて頂けますでしょうか。
今後の勉強の参考にしたいので
ご面倒なのですが、教えて頂けますでしょうか。
御忙しい所、申し訳ございません。
>サン さん 今晩は。
>
>私は、こんなのを見ると、すぐdictionaryを使いたくなるんです。
>標準モジュールに貼り付けて使ってみてください。
>
>Sub 集計3()
>Dim vnt, a
>Dim i As Long
>Dim dic As Object
> '
> With Sheets("Sheet1")
> vnt = .Range("G2", .Range("A65536").End(xlUp)).Value
> End With
> '
> Set dic = CreateObject("Scripting.Dictionary")
> For i = 1 To UBound(vnt, 1)
> If Not dic.exists(vnt(i, 1)) Then
> ReDim a(6)
> a(0) = vnt(i, 1)
> a(1) = vnt(i, 2)
> a(2) = vnt(i, 3)
> a(3) = vnt(i, 4)
> Else
> a = dic(vnt(i, 1))
> End If
> a(4) = a(4) + vnt(i, 5)
> a(5) = a(5) + vnt(i, 6)
> a(6) = a(6) + vnt(i, 7)
> dic(vnt(i, 1)) = a
> Next i
> '-----結果出力
> With Sheets("Sheet2")
> .Cells.ClearContents
> .Range("A1").Resize(, 7).Value = Array("コード", "業種", _
> "顧客名", "フリガナ", "売上", "消費税", "合計")
> .Range("A2").Resize(dic.Count, 7).Value = Application _
> .Transpose(Application.Transpose(dic.items))
> .Select
> End With
> '
> Erase vnt
> Set dic = Nothing
>End Sub
>
>
>>下記のような売上表を顧客名に別のシートにデータを
>
>>シート1
>>コード 業種 顧客名 フリガナ 売上 消費税 合計
>>000001 04 ×× ×× 5,000 250 5、250
>>000001 42 ×× ×× 5,000 250 5、250
>>000002 42 ○○ ×× 1,000 50 1,050
>>000002 04 ○○ ×× 1,000 50 1,050
>> ・
>> ・
>> ・
>>
>>
>>シート2
>>コード 業種 顧客名 フリガナ 売上 消費税 合計
>>000001 ×× ×× 10,000 500 10、500
>>000002 ○○ ×× 2,000 100 2、100
>> ・
>> ・
>> ・
>>とするのには、どうすれば宜しいでしょうか。
|
|