Excel で曜日ごとの平均を計算するには?
Excel では、各エントリが属する週(たとえば月曜日、平日、週末など)に応じて数値リストの平均値を計算したい場面がよくあります。たとえば、売上データを分析する際に、曜日ごとの注文数の平均を求めたい場合などが該当します。こうした要件は、売上レポート作成やパフォーマンスの追跡、時間軸に基づく分析など、さまざまな業務シーンで頻繁に登場します。以下では、週ごとの平均を求めるための実用的なソリューションとして、数式、VBA コード、およびピボットテーブルを活用する方法をご紹介します。これらの手法を使えば、カレンダーパターンに沿ってデータの傾向を深く読み取り、有益なインサイトを引き出すことができます。

↳ 特定の曜日(例:月曜日)
↳ 平日(月~金)
↳ 週末(土・日)
➤ VBA マクロで曜日ごとに平均計算を自動化
➤ PivotTable:数式を使わずに曜日でグループ化して平均を算出
数式を使って曜日ごとの平均を計算する
特定の曜日ごとの平均を計算する
特定の曜日(例:すべての月曜日)に関連付けられた値の平均を計算するには、Excel の配列数式または SUMPRODUCT 関数をご利用いただけます。日々の傾向を効果的に要約したり、イベントのパターンを的確に把握したりするのに特に役立ちます。たとえば、データセット内で月曜日の注文数の平均を算出したい場合は、以下の方法をお試しください。
空白のセルに、次の数式を入力してください。
=AVERAGE(IF(WEEKDAY(D2:D15)=2,E2:E15)) 次に、Ctrl + Shift + Enterを同時に押してください。これにより、Excel にその数式が配列数式であることを伝え、各行を個別に処理して正しい結果を出力できるようになります。

注記と説明:
- D2:D15は日付のリストです。これらが有効なExcel 日付値であることをご確認ください。
- 2は月曜日を表します。週の各曜日に対応する数値は次のとおりです:日曜日=1、月曜日=2、火曜日=3、水曜日=4、木曜日=5、金曜日=6、土曜日=7。
- E2:E15は、平均を計算したい数値の範囲で、注文数や売上高など、同じ種類の指標を含みます。
ヒント:
- お使いのExcel が動的配列数式(Office 365 以降)に対応している場合、Ctrl + Shift + Enterを使わずに、数式をそのまま直接入力できます。
- 数式エラーを防ぐため、セルが空白でないか、また日付以外の値が含まれていないかご確認ください。
より柔軟な代替手段として、SUMPRODUCT 関数を使えば同じ結果が得られます。この方法では配列数式を入力する必要がなく、大規模なデータセットに最適です。
=SUMPRODUCT((WEEKDAY(D2:D15,2)=1)*E2:E15)/SUMPRODUCT((WEEKDAY(D2:D15,2)=1)*1) この数式をセルに入力したら、Enterキーを押してください。D2:D15は日付範囲、E2:E15はデータ範囲、そして1は月曜日を表します(WEEKDAY 関数の第2 引数を2 に設定すると、月曜日=1、火曜日=2、…、日曜日=7 となります)。
平日ごとの平均を計算する
データ内の平日(月曜日から金曜日)の平均値を求めるには、次の配列数式をご利用ください。
=AVERAGE(IF(WEEKDAY(D2:D15,2)={1,2,3,4,5},E2:E15)) 空のセルにこの数式を入力し、Ctrl + Shift + Enterを押して確定してください。

注記と説明:
- この数式は、日付が平日(月曜日~金曜日)に該当する行のみの平均を計算します。
- D2:D15 内の日付値が有効であることをご確認ください。有効でない場合、WEEKDAY 関数が期待通りの結果を返さない可能性があります。
ヒント:
- 配列入力を避けたい場合は、以下に示す SUMPRODUCT 関数を使った代替方法をご活用ください。
- 日付列に実際のExcel 日付(テキスト形式ではない)が含まれていることをご確認ください。
これと同じ結果を得る別の方法として、SUMPRODUCT 関数を使った数式があります。
=SUMPRODUCT((WEEKDAY(D2:D15,2)<6)*E2:E15)/SUMPRODUCT((WEEKDAY(D2:D15,2)<6)*1) この数式を入力してEnterキーを押すだけで、曜日番号が6 未満(つまり月曜日から金曜日)の値の平均が瞬時に計算されます。
週末ごとの平均を計算する
週末(土曜日と日曜日)の値のみの平均を計算するには、次の配列数式を使用します。
=AVERAGE(IF(WEEKDAY(D2:D15,2)={6,7},E2:E15)) 空のセルに数式を入力し、Ctrl + Shift + Enterで確定してください。

注記と説明:
- この数式は、第2 引数が2 の場合に、WEEKDAY 関数が6 または7(土曜日または日曜日)を返す日付を対象としています。
ヒント:
- 大規模なデータセットでは、以下の SUMPRODUCT を使った代替方法の方が高速で、配列入力も不要です。
- 空白行や日付以外の値が適切に処理されているかを確認し、予期しない平均値が算出されるのを防いでください。
配列入力が不要で、より手軽に動作する SUMPRODUCT を使ったオプションです。
=SUMPRODUCT((WEEKDAY(D2:D15,2)>5)*E2:E15)/SUMPRODUCT((WEEKDAY(D2:D15,2)>5)*1) 常に日付値を確認し、空白セルがないことをチェックして、結果の正確性を確保してください。
VBA コード – マクロで曜日ごとの平均計算を自動化する
完全に自動化された方法をご希望の方、または大規模なデータセットを扱って頻繁に更新が必要な場合は、VBA を使ってデータをループ処理し、エントリを曜日ごとにグループ化して各曜日の平均を計算できます。この方法は、手動での数式調整を省き、曜日別の集計を素早く生成したい場合に最適です。
メリット:手動操作が不要で、完全な集計結果を自動生成。さらに、加工やカスタマイズも自由自在です。
デメリット:マクロを有効化する必要があり、VBA の基本的な知識も求められます。また、非常に動的であったりクラウドベースのシートには向かない場合があります。
操作手順:
1。開発者ツール>Visual Basicをクリックして、VBA エディターを開きます。ウィンドウで、挿入>標準モジュールを選択し、新しいモジュールに以下のコードを貼り付けてください。
Sub AverageOrdersByWeekday()
Dim dict As Object
Set dict = CreateObject("Scripting.Dictionary")
Dim cell As Range
Dim ws As Worksheet
Dim datesRange As Range, valuesRange As Range
Dim i As Long, dayKey As String
Dim sumArr(1 To 7) As Double
Dim countArr(1 To 7) As Long
On Error Resume Next
xTitleId = "KutoolsforExcel"
Set ws = Application.ActiveSheet
Set datesRange = Application.InputBox("Select the date range", xTitleId, Selection.Address, Type:=8)
Set valuesRange = Application.InputBox("Select the corresponding values range", xTitleId, "", Type:=8)
For i = 1 To datesRange.Count
If IsDate(datesRange.Cells(i).Value) Then
Dim wd As Integer
wd = Weekday(datesRange.Cells(i).Value, 2)
sumArr(wd) = sumArr(wd) + valuesRange.Cells(i).Value
countArr(wd) = countArr(wd) + 1
End If
Next i
Dim resWs As Worksheet
Set resWs = Worksheets.Add
resWs.Name = "Weekday Averages"
resWs.Cells(1, 1).Value = "Weekday"
resWs.Cells(1, 2).Value = "Average"
Dim dayNames As Variant
dayNames = Array("Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday")
For i = 1 To 7
resWs.Cells(i + 1, 1).Value = dayNames(i - 1)
If countArr(i) > 0 Then
resWs.Cells(i + 1, 2).Value = sumArr(i) / countArr(i)
Else
resWs.Cells(i + 1, 2).Value = "No data"
End If
Next i
End Sub 2。マクロを実行するには、
ボタンをクリックするか、F5キーを押してください。プロンプトが表示され、日付範囲(例:D2:D15)と対応する数値範囲(例:E2:E15)を選択できます。
マクロは、各曜日の平均を集計した新しいワークシートを自動作成します。「平均」は月曜日から日曜日まで計算され、いずれかの曜日に該当するデータがない場合は「データなし」と表示されます。
注意点とヒント:
- 日付と数値の両方の範囲が同じサイズであり、各行が正しく対応していることをご確認ください。
- マクロを実行するには、ブックをマクロ対応ファイル(*。xlsm)として保存する必要があります。
- エラーが発生した場合は、範囲内に空欄や無効なエントリが含まれていないか確認してください。
- コードを変更すれば、特定の曜日でフィルタリングしたり、集計内容をさらに充実させたりできます。
PivotTable – PivotTable を使用して、数式を使わずに曜日で日付をグループ化し、平均を計算する
週ごとのデータ分析と平均化を行うもう一つの方法は、ピボットテーブルを使うことです。このアプローチはユーザーフレンドリーで、数式の手動入力やコーディングが一切不要です。ピボットテーブルを使えば、データを動的にグループ化して平均を計算でき、データに変更があった際にも結果が即座に更新されます。
メリット:設定がスピーディーで、大規模なデータセットにも対応。新規データを追加すると自動更新され、フィルターや並べ替えなど、さらに高度な分析もサポートします。
デメリット:データがExcel テーブルまたは構造化された範囲に整理されている必要があります。また、VBA ソリューションと比べてカスタマイズ性がやや制限されます。
操作手順:
1。 曜日の名前を表示するためのヘルパー列を追加します。
空の列(例:F 列)で、F2セルに次のように入力します:
=TEXT(D2,"dddd") 数式をデータ行の最後までコピーします。(日付が)D2:D15にあるものとします。)
2。ヘルパー列を含むソース範囲(例:D2:F15)を選択します。最良の結果を得るには、Ctrl+TでExcel テーブルに変換し、そのまま選択状態を維持してください。
3。挿入>ピボットテーブルに進み、「ピボットテーブルの作成」ダイアログで配置場所を選択してください(新しいワークシートを推奨)。その後、OKをクリックします。
4。ピボットテーブルフィールドウィンドウで:
—曜日ヘルパー項目(列 F)を行ラベルエリアにドラッグします。
— 数値項目(例:列 E の)注文数)を値エリアにドラッグします。
5。 集計方法を「平均」に変更します:
値エリアのドロップダウンをクリック > 値のフィールドの設定 > 平均 > OK。
6。(オプション)曜日を月曜日→日曜日の順に並べ替えます:
任意の曜日ラベルを右クリック > 並べ替え > その他の並べ替えオプション、または小さなカスタム並べ替え用ヘルパー(1~7)を追加してそれを基準に並べ替えることもできます。また、「値のフィールドの設定 > 数値の書式設定」から数値の書式を設定することも可能です。
7。データ変更時に更新します:
ソーステーブルを更新した後、ピボットテーブル内の任意のセルをクリックし、「更新」(または「)データ」→「すべて更新」)を選択します。
ヒントとトラブルシューティング:
- 日付列に有効なExcel 日付(テキスト形式ではないもの)が含まれていることをご確認ください。そうでない場合、曜日を判定する数式が失敗する可能性があります。
- 平均値が正しくないように見える場合は、値フィールドが平均に設定されているか()合計になっていないか)をご確認ください。
- 元のテーブルを変更したり行を追加した後は、ピボットテーブルが再計算されるよう、更新を実行してください。
- セミコロンを使用するロケール設定の場合は、代わりに
=TEXT(D2;"dddd")を入力してください。
PivotTable を使用した曜日分析は手順を簡略化し、プレゼンテーションや他者とのインサイト共有に特に役立つインタラクティブなレポートを作成するのに役立ちます。

KUTOOLS AI でExcel の魔法を解き放ちましょう
- スマート実行:セル操作、データ分析、チャート作成をすべてシンプルなコマンドで実現します。
- カスタム数式:ワークフローの効率化に役立つ、あなただけのカスタマイズ数式を生成します。
- VBA コーディング:VBA コードを簡単に記述・実装できます。
- 数式の解釈:複雑な数式が簡単に理解できます。
- テキスト翻訳:スプレッドシート内で言語の壁を乗り越えましょう!
関連記事:
Excel で2 つの日付の間の平均を計算するにはどうすればよいですか?
Excel で複数の条件に基づいてセルの平均を求めるにはどうすればよいですか?
Excel で上位3 つまたは下位3 つの値の平均を求めるにはどうすればよいですか?
最高の Office 業務効率化ツール
| 🤖 | KUTOOLS AI アシスタント:次に基づいてデータ分析を革新します:インテリジェント実行 | コード生成| カスタム数式作成 | データ分析とチャート生成| 拡張機能呼び出し… |
| 人気の機能:検索・ハイライト、または重複をマーキング | 空白行を削除する | データを失うことなく列の結合またはセルを | 数式を使用しない四捨五入... | |
| スーパー LOOKUP:複数条件 VLookup | 複数値 VLookup | 複数シート間 VLookup | ファジーマッチ.... | |
| 高度なドロップダウンリスト:ドロップダウンリストをすばやく作成 | 連動型ドロップダウンリスト | 複数選択可能なドロップダウンリスト.... | |
| 列マネージャー:指定した数の列を追加|列の移動|非表示列の表示状態を切り替え|範囲および列の比較... | |
| 注目の機能:グリッドフォーカス | デザインビュー |強化された数式バー | ワークブックとシートマネージャー | リソースライブラリ(オートテキスト)| 日付ピッカー | ワークシートの統合 | 暗号化/セルの復号化 | リストからメール送信 | スーパーフィルター | 特殊フィルタ(太字のフォントを持つセルをフィルタリング/斜体/取り消し線。。。) 。。。 | |
| トップ15 ツールセット:12 テキストツール(テキストの追加、特定の文字を削除、...)| 50+チャートタイプ(ガントチャート、...)| 40+実用的関数(誕生日に基づいて年齢を計算します、...)| 19 挿入ツール(QR コードを挿入、パスから画像を挿入、...)| 12 変換ツール(単語に変換する、為替レートの変換、...)| 7 結合と分割ツール(高度な行のマージ、セルの分割、...)|さらに多数 |
Kutools for Excel でExcel スキルを強化し、これまでにない効率を体験しましょう。Kutools for Excel は、生産性を高め、時間を大幅に節約できる高度な機能を300 以上提供します。最も必要な機能を今すぐ入手するにはこちらをクリック。。。
Office Tab は Office にタブインターフェースをもたらし、作業を大幅に簡単にします
- Word、Excel、PowerPoint でタブを使った編集と閲覧を有効にします。Publisher、Access、Visio、Project でもご利用いただけます。
- 複数のドキュメントを、新しいウィンドウではなく、同じウィンドウ内の新しいタブで開いたり作成したりできます。
- 日々の生産性を50%も向上させ、毎日数百回ものマウスクリックを削減します!
すべてのKutools アドインが、たった1 つのインストーラーで完結。
Kutools for Officeスイートには、Excel ・Word ・Outlook ・PowerPoint 用のアドインと Office Tab Pro が含まれており、複数の Office アプリを横断して作業するチームに最適です。
- オールインワンスイート— Excel、Word、Outlook、PowerPoint 用アドイン+Office Tab Pro
- インストーラー1 つ、ライセンス1 つ— 数分でセットアップ可能(MSI 対応)
- 連携してさらにパワーアップ— Office アプリ全体で生産性が向上
- 30 日間のフル機能トライアル— 登録不要、クレジットカード不要
- 最高のお得感— 個別アドイン購入よりお得