メインコンテンツへスキップ

Kutools for Office — 1つのスイート、5つのツールで、もっと多くのことを成し遂げましょう。

Excelで年/四半期/月/週ごとの発生回数を数える方法は?

Author: Kelly Last Modified: 2025-08-26

日常業務において、データ分析ではよく時間単位でレコードやイベントの数を要約する必要があります。たとえば、各月に何件の売上が発生したかを数えたり、週ごとの活動頻度を追跡したり、四半期ごとの季節的傾向を分析します。COUNTIF関数は特定の条件に基づいてデータを数えるためにExcelで一般的に使用されますが、年、月、四半期、または週ごとに日付をグループ化してカウントしたい場合、必ずしも簡単ではありません。この課題に対処するために、本記事ではExcelでさまざまな時間単位(年、四半期、月、週、平日)ごとの発生回数を数えるための実用的で簡単に適用できる方法をいくつか紹介します。これにより、タイムベースのデータを効率的に要約・分析でき、手動でのカウントミスを回避できます。


年/月ごとの発生回数を数式でカウント

特定の年または月に特定のイベントが何回発生したかを迅速に把握する必要がある場合、数式は柔軟で動的なアプローチを提供します。SUMPRODUCTと組み込みの日付関数を使用することで、年、月、またはその任意の組み合わせに基づいて直接カウントを計算でき、結果として得られる要約は正確であり、ソースデータの変更に応じて自動的に更新されます。このアプローチは小規模から中規模のデータセットにおけるほとんどの日常的な分析タスクでうまく機能します。

カウント結果を表示したい空白のセルを選択し、次の数式を入力します:

=SUMPRODUCT((MONTH($A$2:$A$24)=F2)*(YEAR($A$2:$A$24)=$E$2))

数式を入力後、必要に応じて他の行にも適用するために、セルのオートフィルハンドルを下にドラッグします。以下のように示されています:
apply a formual to count the number of occurrences per year and month

注意とヒント:

  • 数式の MONTH($A$2:$A$24)=F2 および YEAR($A$2:$A$24)=$E$2 は、指定された月(F2)と年(E2)に一致する基準です。範囲と参照(A2:A24E2F2など)をデータレイアウトに合わせて更新してください。
  • 年を無視して月のみでカウントする場合は、次を使用します:
    =SUMPRODUCT(1*(MONTH($A$2:$A$24)=F2))
  • 日付列には実際のExcel日付値が含まれていることを確認し、エラーや不一致を避けるためにテキスト形式の日付を使用しないでください。数式が予期しない結果を返す場合は、日付の書式設定を再確認してください。
  • データセットが大きい場合、パフォーマンスと保守性を考慮してピボットテーブルまたはVBAを使用することを検討してください。

この方法は、迅速な日付統計が必要なほとんどのシナリオや、データ修正時に結果を自動的に更新したい場合に適しています。ただし、複数のグループ化条件で作業すると、数式が複雑になり保守が難しくなる可能性があります。


Kutools for Excelを使用して年/月/平日/日ごとの発生回数をカウント

Kutools for Excelがインストールされている場合、直感的なユーティリティを利用して年、月、平日、日、さらには年と月や月と日の組み合わせなどで発生回数をグループ化してカウントすることができます。このアプローチは特に、ビジュアルでメニュー駆動型のソリューションを求めているユーザーにとって効率的です。

Kutools for Excelは、300以上の高度な機能を提供し、複雑なタスクを簡素化し、創造性と効率を向上させます。 AI機能と統合され、Kutoolsは正確にタスクを自動化し、データ管理を容易にします。Kutools for Excelの詳細情報...無料トライアル...

1. 日付が含まれている列を選択し、クリックします Kutools > 書式 > 日付形式を適用する次のダイアログが表示されます:
go to the Apply Date Formatting dialog and set the options

2. 「日付形式を適用」ダイアログボックスで、カウント要件に対応する書式スタイル(月、年、平日、日など)を選択し、「OK」をクリックします。例えば、月ごとにカウントする場合は「Mar」を選択します。

3. 日付列がまだ選択されている状態で、クリックします Kutools > 実際の値に変換するこのステップでは、すべての日付を表示される値(例:月名)に変換して、後続のステップでのグループ化を容易にします。
clcik To Actual to convert dates to the month names

4. 次に、変換されたグループ名と関連データ(金額やカテゴリ列など)を含む範囲を選択します。移動します Kutools > テキスト > 高度な行のマージ次のインターフェースが表示されます:
go to the Advanced Combine Rows feature and set options

5. 「高度な行のマージ」ダイアログボックスで:
(1) グループ化対象となる日付列を 主キー として設定します。
(2) カウントしたい列(例:金額)に対して、計算を カウント.
(3) 他の列(例:果物名をカンマで結合するなど)には他の集計や結合方法を選択できます。
(4) クリックします OK 処理を実行します。

これで、データには選択された期間ごとのレコード数が表示されます。以下のスクリーンショットをご覧ください:
the number of occurrences per month is counted

Kutools for Excel - 必要なツールを300以上搭載し、Excelの機能を大幅に強化します。永久に無料で利用できるAI機能もお楽しみください!今すぐ入手

手動による数式と比較して、Kutoolsはプロセスを簡略化し、人的エラーを減らし、頻繁にグループ化カウントを行うユーザーにとって数式の複雑さを回避するのに非常に適しています。これは小規模および大規模なデータセットの両方でうまく機能します。大量の行を変換または結合する前に、データのバックアップを忘れないでください。

ピボットテーブルを使用して年/月/四半期/時間ごとの発生回数をカウント

ピボットテーブルは、大規模なデータセットを分析し、年、月、四半期、時間などの1つ以上の時間軸で発生回数を集計する強力でインタラクティブな方法を提供します。ピボットテーブルはまた、データパターンを探るための迅速な再構成やフィルタリングを可能にするため、管理報告書の準備にも最適です。

1. データテーブルを選択し、進みます 挿入 > ピボットテーブル「ピボットテーブルの作成」ダイアログボックスが表示されます。
screenshot of clicking Insert > PivotTable

2. ダイアログボックスで、ピボットテーブルの配置場所(新しいワークシートまたは既存の場所、例えばセルE1)を指定し、「OK」をクリックします。 OK.
set options in the Create PivotTable dialog box

3. ピボットテーブルフィールドペインで、日付フィールドを「行」セクションにドラッグし、金額(またはターゲットフィールド)を「値」セクションにドラッグします。デフォルトでは、値は合計される場合があります。

ピボットテーブルは以下のスクリーンショットのように表示されます:
drag the column names to the corresponding fields

4. 値の計算をカウントに変更するには、値列タイトル(例:金額の合計)を右クリックし、「値の集計方法」から「カウント」を選択します。 値の集計方法 > カウント.
select Summarize Values By > Count from the right-clicking menu

5. 追加の期間(月、年、四半期など)でグループ化するには、行ラベル列の任意のセルを右クリックし、「グループ」を選択します。 グループダイアログからグループ化基準(月、年、四半期など)を選択し、「OK」をクリックします。 OK.
select Group from the right-clicking menu and choose month and year

これで、テーブルには選択された期間ごとのカウントが表示されます:
the number of occurrences per year and month is counted

注意: 複数の期間(例:月と年)でグループ化すると、行ラベルに追加のレベルが追加されます。「年」や「日付」などのグループ化フィールドをピボットテーブルフィールドペインで並べ替えて、要約ビューを調整できます。 以下 日付ピボットテーブルフィールドペイン内で、これらの順序を入れ替えて要約ビューを調整できます。
The count of monthly records is calculated by grouping them by month and year.

このアプローチは、定期的なグループ化、比較、集計が必要な大規模で動的なデータセットに最適です。一方で、素早いアドホックなセルレベルの計算や、ピボットテーブルの機能に慣れていないユーザーには適していません。


VBAマクロ: 年/四半期/月/週ごとの発生回数を自動サマリー付きでカウント

さまざまな期間でグループ化された発生サマリーを繰り返し生成する必要がある場合や、特に大規模なデータセットでカウントプロセスを効率化したい場合、カスタムVBAマクロが効果的な解決策となります。この方法は、定期的にデータを処理し、定期的なサマリーテーブルを生成する場合や、数式やピボットテーブルでは扱いにくいカスタムグループ化(会計年度や週など)が必要な場合に非常に適しています。

完全な操作手順:

  • 初めてマクロを実行する前に、ワークブックをバックアップしてください。
  • 開発 > Visual Basic をクリックしてVBAエディターを開きます。
  • 挿入 > モジュール をクリックし、以下のコードをモジュールウィンドウにコピーして貼り付けます。
Sub CountOccurrencesByPeriod()
    Dim lastRow As Long
    Dim ws As Worksheet, summaryWs As Worksheet
    Dim periodType As String
    Dim dict As Object, key As Variant
    Dim dateRange As Range, cell As Range
    Dim outputRow As Long
    
    On Error Resume Next
    xTitleId = "KutoolsforExcel"
    
    Set ws = Application.ActiveSheet
    Set dateRange = Application.InputBox("Select date range:", xTitleId, Selection.Address, Type:=8)
    
    periodType = Application.InputBox("Count by (Year/Quarter/Month/Week):", xTitleId, "Month", Type:=2)
    
    If dateRange Is Nothing Or periodType = "" Then Exit Sub
    
    Set dict = CreateObject("Scripting.Dictionary")
    
    For Each cell In dateRange
        If IsDate(cell.Value) Then
            Select Case LCase(periodType)
                Case "year"
                    key = Year(cell.Value)
                Case "quarter"
                    key = "Q" & WorksheetFunction.RoundUp(Month(cell.Value) / 3, 0) & " " & Year(cell.Value)
                Case "month"
                    key = Format(cell.Value, "yyyy-mm")
                Case "week"
                    key = "W" & WorksheetFunction.WeekNum(cell.Value) & " " & Year(cell.Value)
                Case Else
                    key = Format(cell.Value, "yyyy-mm")
            End Select
            
            If dict.Exists(key) Then
                dict(key) = dict(key) + 1
            Else
                dict.Add key, 1
            End If
        End If
    Next cell
    
    Set summaryWs = Worksheets.Add(After:=ws)
    summaryWs.Name = "Occurrence_Summary"
    
    summaryWs.Range("A1").Value = "Period"
    summaryWs.Range("B1").Value = "Occurrences"
    
    outputRow = 2
    For Each key In dict.Keys
        summaryWs.Cells(outputRow, 1).Value = key
        summaryWs.Cells(outputRow, 2).Value = dict(key)
        outputRow = outputRow + 1
    Next key
    
    MsgBox "Summary completed in sheet 'Occurrence_Summary'.", vbInformation
End Sub

コードを入力後:

  • Excelに戻り、Alt+F8を押してCountOccurrencesByPeriodを選択し、「実行」をクリックします。
  • プロンプトが表示され、分析する日付範囲を選択するよう求められます。日付を含む関連列または範囲を選択します。
  • 二番目のプロンプトで、グループ化する期間(「Year」、「Quarter」、「Month」、または「Week」、大文字小文字は区別されません)を入力します。
  • マクロはOccurrence_Summaryという新しいワークシートを作成し、各期間とその期間内の発生回数をリストします。

トラブルシューティングとヒント:

  • マクロセキュリティ警告が表示された場合、ファイル > オプション > 信頼センター > マクロ設定でマクロ設定を調整します。
  • 日付列には有効なExcel日付値が含まれていることを確認してください。テキスト文字列や混合フォーマットの場合、不正確なカウントやエラーが発生する可能性があります。
  • このマクロは柔軟で、「Quarter」と入力すれば年と四半期ごとにカウントをグループ化したり、「Week」と入力して週ごとに集計することができます。
  • 出力をカスタマイズしたい場合(詳細を追加するなど)、マクロを変更して追加の列や計算ルールを処理できます。

このソリューションはバッチレポートや定期的な分析に堅牢ですが、基本的なVBAの知識と適切なワークブック管理を前提としています。ビジュアル要約を組み合わせたい場合は、ピボットテーブルとVBAの両方を使用することを検討してください。


WEEKNUM関数を使用して週ごとの発生回数をカウント

週ごとのエントリやイベントの頻度を数えることは、営業追跡、プロジェクト管理、リソース割り当てで一般的な要件です。ExcelのWEEKNUM関数は、与えられた日付が年内の何週目に該当するかを返すため、数式を使用してデータを週ごとにグループ化するのが簡単になります。

適用シナリオ:日付リスト(例:売上データや出席データ)があり、年にわたる各週に何件のエントリが該当するかを数えたい場合。この方法は継続的な分析やデータが頻繁に変更される場合にうまく機能し、カウントは自動的に更新されます。

1. 空いている列(例:B2)で、A列の各日付について週番号を計算する次の数式を入力します:

=WEEKNUM(A2,1)

第二引数(「1」)は、週の開始日が日曜日であることを示します(月曜日開始にする場合は「2」に変更)。この数式をすべての日付データの行にコピーします。

2. まとめたい週番号のリストを作成します(例:1,2,3,…)。別の空白セル(D2など)で、B2:B24に週番号がリストされており、D2に検索する週があると仮定して、次の数式を使用して特定の週番号の発生回数をカウントします:

=COUNTIF($B$2:$B$24, D2)

Enterを押した後、週番号のリストに対してこの数式を下にドラッグします。各結果はその週の発生回数を示します。

ヒントと注意点:

  • 異なる年のエントリを区別するために、年と週の両方でカウントしたい場合、次を使用します:
    =SUMPRODUCT((YEAR($A$2:$A$24)=$F$2)*(WEEKNUM($A$2:$A$24,1)=G2))
    ここで、F2は対象の年、G2は対象の週番号です。必要に応じて列範囲と参照を調整してください。
  • WEEKNUM関数の週番号は、設定(システム、米国/ISO、選択した開始日)によって異なる場合があります。
  • ISO週番号を使用する場合(ヨーロッパ標準、月曜日始まりで最初の木曜日を含む週が第一週)、=ISOWEEKNUM(A2)を使用します(Excel2013以降)。
  • 正確な結果を得るためには、すべての日付値が有効なExcel日付形式であることを常に確認してください。

この方法は動的なデータテーブルに適しており、ピボットテーブルや追加のアドインを使用せずに週ごとにカウントをクロス集計したい場合にも適応できます。


デモ:年/月/平日/日ごとの発生回数をカウント

 

関連記事:

最高のオフィス業務効率化ツール

🤖 Kutools AI Aide:データ分析を革新します。主な機能:Intelligent Executionコード生成カスタム数式の作成データの分析とグラフの生成Kutools Functionsの呼び出し……
人気の機能重複の検索・ハイライト・重複をマーキング空白行を削除データを失わずに列またはセルを統合丸める……
スーパーLOOKUP複数条件でのVLookup複数値でのVLookup複数シートの検索ファジーマッチ……
高度なドロップダウンリストドロップダウンリストを素早く作成連動ドロップダウンリスト複数選択ドロップダウンリスト……
列マネージャー指定した数の列を追加列の移動非表示列の表示/非表示の切替範囲&列の比較……
注目の機能グリッドフォーカスデザインビュー強化された数式バーワークブック&ワークシートの管理オートテキスト ライブラリ日付ピッカーデータの統合セルの暗号化/復号化リストで電子メールを送信スーパーフィルター特殊フィルタ(太字/斜体/取り消し線などをフィルター)……
トップ15ツールセット12 種類テキストツールテキストの追加特定の文字を削除など)50種類以上のグラフガントチャートなど)40種類以上の便利な数式誕生日に基づいて年齢を計算するなど)19 種類の挿入ツールQRコードの挿入パスから画像の挿入など)12 種類の変換ツール単語に変換する通貨変換など)7種の統合&分割ツール高度な行のマージセルの分割など)… その他多数
Kutoolsはお好みの言語で利用可能 ― 英語、スペイン語、ドイツ語、フランス語、中国語、その他40以上の言語に対応!

Kutools for ExcelでExcelスキルを強化し、これまでにない効率を体感しましょう。 Kutools for Excelは300以上の高度な機能で生産性向上と保存時間を実現します。最も必要な機能はこちらをクリック...


Office TabでOfficeにタブインターフェースを追加し、作業をもっと簡単に

  • Word、Excel、PowerPointでタブによる編集・閲覧を実現
  • 新しいウィンドウを開かず、同じウィンドウの新しいタブで複数のドキュメントを開いたり作成できます。
  • 生産性が50%向上し、毎日のマウスクリック数を何百回も削減!

全てのKutoolsアドインを一つのインストーラーで

Kutools for Officeスイートは、Excel、Word、Outlook、PowerPoint用アドインとOffice Tab Proをまとめて提供。Officeアプリを横断して働くチームに最適です。

Excel Word Outlook Tabs PowerPoint
  • オールインワンスイート — Excel、Word、Outlook、PowerPoint用アドインとOffice Tab Proが含まれます
  • 1つのインストーラー・1つのライセンス —— 数分でセットアップ完了(MSI対応)
  • 一括管理でより効率的 —— Officeアプリ間で快適な生産性を発揮
  • 30日間フル機能お試し —— 登録やクレジットカード不要
  • コストパフォーマンス最適 —— 個別購入よりお得