9. CSVのデータをキレイにお化粧2
 今度は、並び替えを行ったデータを集計するところまでです。集計は、金額の集計と件数の集計の2種類を行います。
プロシジャ「帳票編集」/金額と件数の集計を追加
 集計処理はプロシジャ帳票編集の並び替えの後に続けて書きます。追加した部分を分かりやすくするために、既に作成してある部分は灰色にしています。

Sub 帳票編集()

  'CSVデータの並べ替え(キーはB列/店舗コード)
  Workbooks("uriage.csv").Activate
  Workbooks("uriage.csv").Worksheets("uriage").Range("A1:M10000").Sort _
    Key1:=Range("B1") _
   , Order1:=xlAscending _
   , Header:=xlGuess _
   , MatchCase:=False _
   , Orientation:=xlTopToBottom _
   , SortMethod:=xlPinYin

  'データの集計(件数の集計)
  Workbooks("uriage.csv").Worksheets("uriage").Range("E1").Subtotal _
    GroupBy:=2 _
   , Function:=xlCount _
   , TotalList:=Array(2) _
   , Replace:=True

  'データの集計(売上げ金額などの集計)
  Workbooks("uriage.csv").Worksheets("uriage").Range("E1").Subtotal _
    GroupBy:=2 _
   , Function:=xlSum _
   , TotalList:=Array(9, 10, 11, 12) _
   , Replace:=False

End Sub

 データを集計するには、Subtotalというメソッドで行います。基準となる場所はRangeで指定しますが、見出し行であればどのセルに基準を合わせても良いです。というわけで、あえてE1を指定してみました。また、2回集計を行っていますが、1コ目は金額の集計2コ目は件数の集計です。

 もっとも気になる集計処理のパラメタは次の通り。

 GroupBy:=2 (この列の情報を元に集計してくれや!

 集計の基準となる列を指定します。2としたのは、店舗コードが左から2番目にあるからです。それだけです(笑)


 Function:=xlSum (合計してくれや!/1回目の集計)
 Function:=xlCount (件数を出してくれや!!/2回目の集計)

 集計の方法を指定します。xlSumは合計です。他に、平均(xlAverage)、最大値(xlMax)、最小値(xlMin)などがあります。


 TotalList:=Array(9, 10, 11, 12) (この列を集計してくれや!/1回目)
 TotalList:=Array(2) (この列を集計してくれや!/2回目)

 集計する列を指定します。複数ある時は、カンマ(,)で区切って指定します。

 1回目の集計では価格ポイント売上げ額現金売上額原価を集計しているのでArray(9, 10, 11, 12)を指定しています。数字は列の番号です。

 2回目の集計では店舗コードごとに件数を集計しているので、Array(2)を指定しています。


 Replace:=True (新しく集計するんだぜ!/1回目)
 Replace:=False (集計を追加するんだぜ!/2回目)

 集計結果を新たに作成するのか、既にある集計結果に追加するのかを指定します。trueは新たに作成です。
 Falseにすると、既にある集計結果に追加されます。
テストしてみよう!
 またまた、ここまでの内容で動かしてみよう!しつこいようですが、動かす前のワークブックの保存をお忘れ無く!絶対にです。並び替えと集計が完了すると、こんな感じになったでしょ?

 それと一つ実験ですが、2コ目の集計で、Replace:=FalseReplace:=Trueで試してみてください。どんな結果が出るでしょうか・・・・?
 でも、実験したら必ず元に戻してください。

 テストが終わったらCSVファイルと新しいワークブックは閉じてもかまいません。保存しますか?と聞かれても、これらについては、きっぱりいいえと答えましょう。

 ※印刷設定プロシジャの呼び出し(Call 印刷設定)でプロシジャが無いという内容のエラーが出ますが、これは気にしないでください。ここまでの状態だと、まだ作っていないため必ず出ます。でも、それ以外のエラーが出たときは気にしてください(汗)
Copyright(C) 1999-2006 結城圭介。 All rights reserved