コメント(0)先日のエントリーで「CSVデータを会計情報に利用する」というエントリーを書きました。そこでは、ひとつのシートに1か月分の売上明細をピボットテーブルで作成するという内容でした。ひとつ先に進んで考えてみると、各シートにある月分の集計データを、別シートに12か月分の集計としてまとめることも必要です。結果、12ヶ月分のお客様ごとの売上明細を作成できることになるからです。ここでひとつの問題が生じます。年の途中でお客様が増えた場合などはエクセルのセルに記載されているデータ(会社名)の順序が変わることになります(下図)。このように各シートで異なる順序の表を別シートで集計するには、串刺し機能では集計できません。エクセルの結合という機能を使うと各シートに存在する異なる形の表を集計することができます。後からシートを追加しても対応できます。「後からシートを追加」という2つの条件下において、その表のデータを別シートに集計する方法を考えてみたいと思います。1シート、1ヶ月で表を管理する1シートに12ヶ月分のデータを表示させるのではなく、1ヶ月で1シートということにしました。sheet2には1月分を、sheet3には2月分をという並び順で各シートに各月の明細を貼り付けました。1年間では12個のシートができることになります。それに加えて、それら各シート合計を集計する「総計」という名称のシートを作りました。合計で13個のシートのブックが出来上がりました。並び順の異なる表と並び順が同じ表とは?ここで問題なのが各シートのデータを集計する方法です。各顧問先の名称の並び順が、それぞれのシートで全く同じであれば各シートの合計は非常に簡単です(下図A参照)。串刺し集計を使ったり、関数を使ったりすることで対応できます。期中で新たに顧問先様が増えたりすることにより、並び順が変わることがあります(下図B参照)。各シートにある並び順が異なる表のデータを集計することは、串刺し集計や関数ではできません。そこで「各シートにある、異なる並び順の表のデータを1つのシートに集計する」方法は何がベストなのかを考えました。A社からE社までの各シートの並び順が同じ【図A】A社からE社までの各シートの並び順が異なっている。→串刺し集計や関数では集計できない。並び順が異なる各シートの表を集計する「結合」すぐに思い浮かぶのがエクセルの「結合」です。この機能を使えば、「各シートにある、異なる並び順の表のデータを1つのシートに集計する」ことができます。ここで問題が生じます。毎月、シートがひとつずつ増えます。6月になると新たにシートをひとつ追加して、6月のデータを貼り付けます。結合の処理をするのは面倒です。できれば、マクロを使って、ワンクリックで集計したいと思いました。結合をマクロで実行してみる以下のマクロを使うことによって、異なる並び順の表のデータを1つのシートに集計することができました。Worksheets.Count→統合元は2番目のシートから続きます。シートが増えても対応できるように、数字ではなくCountプロパティイを指定します。ワークシートの数が増減しても対応できます。Worksheets(i).Range(“A1”).CurrentRegion→各シートデータを集計する起点はセルA1。Worksheets(“総計”).Range(“A1”).Consolidate→集計したデータは、総計シートのA1以降に表示します。各シートにある異なる並び順の表が、ひとつのシートに集計されました。在宅勤務、在宅ワークで活力を取り戻す日本[次の記事]MovableTypeからWordPressに変更しました。研究結果でも証明、仕事・勉強がはかどるBGM。【書評】あなたはなぜチェックリストを使わないのか?STREAMED(ストリームド)の有料プランに登録してみました。