「Excel ピボットテーブルの日付の自動グループ化」記事でご紹介しましたように、日付のフィールドを含む表データをピボットテーブルで集計すると、その日付範囲に応じて「月」「四半期」などの期間で自動的にグループ化も行われます。
ところが、このグループ化の単位は「日」の次が「月」となっており、「週」がありません。
そこで、「Excel 週・月・年月・年ごとに集計」記事が出てきます。
この記事では、タイトルどおり、各期間ごとの集計をする方法をご紹介しています。
けれど、ピボット操作から離れて Excel関数を使って集計する方法でした。
もちろん、これはこれで用をなすものですが、ピボット操作の中で「週」単位のグループ化も覚えておいて損はありません。
ピボットテーブルで「週」単位のグループ化をするには以下の 2つの方法があります。
下図のような表データを使って試してみます。
(1) 「グループ化」ダイアログで
表データ内の任意のセルを選択しておき、[挿入]-[テーブル]-[ピボットテーブル]をクリック、現れた「テーブルまたは範囲からのピボットテーブル」ダイアログで「OK」します。
画面右側に表れた「ピボットテーブルのフィールド」ダイアログにおいて、「売上日」を「行」ボックスにドラッグ&ドロップします。
(「列」「値」ボックスには集計したい項目をドラッグ&ドロップします。)
すると、自動的に「月(売上日)」「日(売上日)」フィールドが作成されます。(下図)
この「1月」「2月」「3月」のいずれかの上で右クリックし「グループ化」を選択すると、「グループ化」ダイアログが現れます。(下図)
このダイアログでもお分かりのように、グループ化の単位は「日」の次が「月」となっています。
それでは「週」単位のグループ化としてみましょう。
ダイアログの「単位」で「日」を選択し、右下にある「日数」を「7」とし、「OK」します。(下図)
この方法は簡単ですが、週の始まりの曜日を指定できないのが欠点です。
(2) WEEKNUM関数で週番号を使う
表データに「週」という列を追加し、その列の最初のセルに「=WEEKNUM(A2)」と入力し、列の最下行までコピーします。(下図)
「WEEKNUM」関数は、1月1日を含む週を第1週とし、指定した日付が第何週目に当たるかを返します。
その書式は
WEEKNUM(シリアル値,[週の基準])
で、第2引数の「週の基準」は 週の始まりを何曜日とするかを数値で指定します。
省略すると「1」と見做され、日曜日を指定したことになります。
この表データについて同様にピボットテーブルを作成すると、下図のようになります。
「週」フィールドを「行」ボックスの「売上日」の下にドラッグしても集計表の表示は変わりませんので、上記のように「グループ化」ダイアログを出して、「単位」で「日」を選択し「OK」、さらに「月」を選択し「OK」すると上図のようになります。
基本的には、これで日曜始まりの週単位での集計が出来た訳ですが、1月1日を含む週から数えた週番号で表示されており少々見づらいですね。
月が替わるごとに、その月の中で第何週かを表わすように変えてみます。
手抜きをして、その数式だけ示します。
表データの「週」列の最初のセルを次のように変更します:
=WEEKNUM(A32)-WEEKNUM(DATE(YEAR(A32),MONTH(A32),1))+1
改めて、この表データについて同様にピボットテーブルを作成します。(下図)
各月とも日曜始まりの週単位での小計も表示されるようになりました。
月曜始まりとしたければ、上式を次のように変更します:
=WEEKNUM(A32,2)-WEEKNUM(DATE(YEAR(A32),MONTH(A32),1),2)+1