|
▼なみ さん:
> 調べて似ているかなというマクロを参考にしてみました。
> Sub 納入業者毎に集計()
確かに、どこかで見たコードですね(^^
>やりたいこととしては、業者コード別に集計をしたいのです。
>ただし、区分は、AとBのみの合計で、月ごとに業者別に集計したいのです。
>
業者コード はE列、区分はJ列だとして、
「月ごと」というのはどの列のことですか?
集計 というのは どの列を集計するのですか?
以下のように列を仮定してみました。列が違っていたら、修正してください。
Sub Try1()
Dim r As Range
Dim Code, Price, Cat, Mon
Dim i As Long, m As Long, n As Long, nn As Long, k As Long
Set r = Range("A1").CurrentRegion
With Application
Set r = .Intersect(r, r.Offset(1)) '1行目をカット
Code = .Transpose(r.Columns("E")) 'コード (文字列)
Price = .Transpose(r.Columns("I")) '発注額 I列
Cat = .Transpose(r.Columns("J")) '区分
Mon = .Transpose(r.Columns("H")) '納期 H列
End With
nn = UBound(Code)
ReDim Ans(nn, 6)
Ans(0, 1) = "コード" '0行目に 列見出し
For i = 4 To 9
Ans(0, i - 3) = i & "月計" '4月なら 1列目
Next
With CreateObject("Scripting.Dictionary")
For i = 1 To nn
Select Case Cat(i)
Case "A", "B"
If .Exists(Code(i)) Then
n = .Item(Code(i))
Ans(n, 0) = Code(i)
Else
k = k + 1
.Item(Code(i)) = k
n = k
End If
m = Month(Mon(i)) - 3 '4月なら 1列目
Ans(n, m) = Ans(n, m) + Price(i)
End Select
Next
End With
With Range("M1").Resize(k + 1, 7)
.NumberFormat = "#,##0"
.ClearContents
.Value = Ans
End With
End Sub
|
|