|
こんにちは、はじめまして。
VBA初心者でどうしたらいいのかわからないので投稿します。
下のような表があります。
やりたいこととしては、業者コード別に集計をしたいのです。
ただし、区分は、AとBのみの合計で、月ごとに業者別に集計したいのです。
(うまくかけなくてすみません。)
いろいろ調べて似ているかなというマクロを参考にしてみました。
が、何をどう足せばいいのかわからないので教えていただけませんか?
よろしくお願いします。
Sub 納入業者毎に集計()
Dim dic As Object
Dim ws As Worksheet
Dim i As Long, j As Long, k As Long
Dim sKey As Variant
Dim s, v, v1, Ans()
Set dic = CreateObject("Scripting.Dictionary")
Set ws = ThisWorkbook.Worksheets("Sheet1")
With ws
With .Range("F3", .Range("F65536").End(xlUp))
s = .Value '納入業者
v1 = .Offset(, 4).Value '発注額
End With
For i = 1 To UBound(s)
sKey = s(i, 1)
If dic.Exists(sKey) Then
j = dic(sKey)
Ans(1, j) = Ans(1, j) + v1(i, 1)
Else
k = k + 1
dic(sKey) = k
ReDim Preserve Ans(2, 1 To k)
Ans(0, k) = sKey
Ans(1, k) = v1(i, 1)
End If
Next
.Range("N3").Resize(k, 3).Value = _
Application.Transpose(Ans)
End With
Set dic = Nothing
Set ws = Nothing
End Sub
表は、下のとおりです。
【データ】
A B C D E F G H I J K
1 発注日 担当 品名 数量 コード 業者 No. 納期 発注額 区分 検収日
2 4/8 A りんご 100 1000 AAA 1 4/9 21,600 A 4/8
3 4/8 B バナナ 20 1000 AAA 2 4/9 3,000 U 4/8
4 4/9 A りんご 105 2000 BBB 3 4/10 150,800 B 4/22
5 4/10 A りんご 10 2000 BBB 4 4/11 9,072 A 4/10
6 4/10 A バナナ 50 1000 AAA 5 4/11 31,842 A 4/10
7 4/10 B バナナ 60 3000 CCC 6 4/11 -1,490 4/10
8 4/16 A りんご 71 4000 DDD 7 4/17 275,000 B 5/9
9 4/21 A りんご 63 4000 DDD 8 4/22 17,700 A 4/21
10 4/21 B バナナ 64 1000 AAA 9 4/22 94,962 A 4/21
11 4/30 C バナナ 77 4000 DDD 10 5/1 312,669 A 5/7
12 4/30 C りんご 45 1000 AAA 11 5/1 200,925 A 5/15
【希望の結果】
M N O P Q R S
1 コード 4月計 5月計 6月計 7月計 8月計 9月計
2 1000 148,404 200,925
3 2000 159872
4 3000 17700
5 4000 587669
|
|