|
▼うしろ さん:
オートフィルタ―を用いたものではないのですが
Dictionaryの勉強がてら作ってみました。
参考になれば幸いです。
Option Explicit
Sub Sample()
Dim Dic As Variant, Keys As Variant
Dim i As Long, j As Long
Dim buf1 As String, buf2 As Currency
Set Dic = CreateObject("Scripting.Dictionary")
j = Cells(Rows.Count, 2).End(xlUp).Row
For i = 2 To j
buf1 = Cells(i, 2).Value '種別をbuf1に格納する
buf2 = Cells(i, 5).Value '金額をbuf2に格納する
If Not Dic.Exists(buf1) Then 'まだ登録されていなかったら…
Dic.Add buf1, buf2 '種別と金額を連想配列に登録する
Else
Dic(buf1) = Dic(buf1) + buf2 '金額を追加する
End If
Next i
Keys = Dic.Keys
For i = 0 To Dic.Count - 1
Cells(i + 2, 7) = Keys(i)
Cells(i + 2, 8) = Dic(Keys(i))
Next i
Set Dic = Nothing
End Sub
>年月日 種別 店舗名 内容 金額
>9月2日 食費 業務用スーパー 烏龍茶×2 216
>9月2日 食費 業務用スーパー 麻婆茄子の素 88
>・・・・・・・・・続く
>上表のようにA列に年月日、B列:種別、C列:店舗名、D列:内容、E列:金額の順で入力された1ケ月毎の家計簿があります。種別毎に集計をしたいのですが、月によって種別の数が異なるのでマクロ(EXCEL2007)で対応したいと考えています。
>2003までのマクロと異なり自動記録機能ができないようなので相談に上がりました。考え方はおそらく以下のようにすればよいと思うのですがコードの記述方法を
>ご教示願います。(Win7 excel2007)
>1.(オート)フィルタ―
>2.B列の種別(1つ)を選択
>3.種別に対するE列の集計
>4.一時的に新しいシートに種別、金額をコピー(または内部メモリに記憶)
>5.F列に種別、G列に集計金額をコピーまたは記載(集計毎に行を下にずらす)
>6.新しいシートを削除
>→2.に戻り次の種別(1つ)を選択(種別が終了するまで繰り返す)
>7.(オート)フィルターの解除
|
|