Excelで条件に基づいて表示されているセルのみを合計するにはどうすればよいですか?
Excelでは、ユーザーは通常、SUMIFS関数を使用して特定の条件に基づいてセルを合計できます。しかし、フィルタリングされたデータを扱う場合、単にSUMIFSを適用すると、計算に表示されているセルと非表示のセルの両方が含まれてしまいます。下のスクリーンショットに示すように、特定の条件に一致する表示されている(つまり、フィルタリングされていない)セルのみを合計する必要がある場合、これにより誤った結果が生じることがよくあります。
フィルタリングされたテーブル内のデータを正確に集計することは、日常のレポート作成やデータ分析ワークフローにおいて一般的なニーズです。たとえば、いくつかのフィルタを適用した後、特定の製品やカテゴリーの売上金額を計算する場合などです。これを間違って行うと、意図しないデータが合計に含まれる可能性があるため、画面上に表示されている可視データのみを合計する手法を使用することが重要です。
この記事では、異なるシナリオやスキルレベルに適した実用的な方法をいくつか紹介します。それぞれに利点と可能な制限があります。ワークシートのサイズ、データ構造、操作習慣に最も適したソリューションを選択できます。各ソリューションの詳細な手順、潜在的なエラーの説明、およびより信頼性の高い結果を得るために計算プロセスを最適化する方法を以下に示します。
ヘルパーカラムを使用して1つまたは複数の条件に基づいて表示されているセルのみを合計する
特定の条件に基づいて表示されているセルを合計する最も直感的で安定したアプローチの1つは、表示されている行に対して値を返すヘルパーカラムを使用し、その後、所望の条件でSUMIFS関数を活用することです。これは、データセットが頻繁にさまざまな方法でフィルタリングされる場合や、同僚が簡単に理解したり修正できる計算を設定する必要がある場合に特に効果的です。
利点: 設定が簡単;すべてのロジックと計算がワークシート上で見えるまま;小規模から中規模の表に最適;式を調整したり監査したりする際に堅牢です。
制限: 追加のカラムを作成する;行レイアウトが変更された場合、式の更新が必要になる場合がある;非常に大規模なデータセットでは広範な使用が煩雑になる可能性がある。
例えば、フィルタリングされた範囲で「Hoodie」という商品の注文の値のみを合計したい場合:
1. データセットの隣の空白列(例:D列が値の列であると仮定してE2セルなど)に次の式を入力またはコピーします:
オートフィルハンドルをドラッグして、この式をデータ範囲のすべての行に適用します。この式は、行が表示されている場合はD列からの値を返し、フィルタリングによって行が非表示の場合は0を返します。
2. 列Eにヘルパー値を生成した後、条件に基づいて表示されている値のみを合計するためにSUMIFS関数を使用します。たとえば、A列で「Hoodie」の合計を求めたい場合:

=SUMIFS(sum_range, criteria_range1, criteria1, [criteria_range2, criteria2], [criteria_range3, criteria3], ...) の形式でSUMIFS引数を拡張することで、さらに多くの条件を追加できます。常に範囲をチェックして正しい整列と予想される結果を確保してください。
注意: 式を設定した後に列を並べ替えたり、挿入したり、削除したりした場合、すべての参照がデータ構造と一致していることを再度確認してください。範囲が不一致だったり基準セルを更新し忘れた場合、エラーが発生することがあります。
条件に基づいて表示されているセルのみを数式で合計する
ヘルパー列を追加せずに数式ベースの解決策を好む場合、SUMPRODUCT、SUBTOTAL、OFFSET、ROW、MIN関数の組み合わせを使用して、特定の条件に基づいて表示されているセルを合計できます。このアプローチは、配列数式に精通した経験豊富なExcelユーザー向けで、特に追加の列なしでシートを整理しておきたい場合に便利です。
利点: 追加のワークシート列が不要;柔軟で動的;フィルタや条件の変更に応じて即座に式が更新される。
制限: 配列関数に慣れていない人にとって式を読んだりデバッグしたりするのが難しい場合がある;非常に大きな表ではパフォーマンスが低下する可能性がある。
空白セル(例:A2:A12に「Hoodie」の可視セルを合計する場合、実際の値はD2:D12にあり、基準はA17にある)に次の式をコピーまたは入力します:
式を入力した後、「Enter」キーを押して目的の結果を得ます。以下に示すように:
注意: このアプローチは指定された範囲に敏感です—不一致または重複した範囲はエラーや予期しない結果を引き起こす可能性があります。特にフィルタリングによって可視行の数や位置が変わる場合、エッジケースをテストしてください。
VBAコードを使用して条件に基づいて表示されているセルのみを合計する
上級ユーザーの場合、VBAを使用すると、標準的な数式では性能上のボトルネックが発生する可能性がある複雑なシナリオや大規模なデータセットを処理する際に、特定の条件に基づいて表示されているセルのみを合計する柔軟な方法を提供します。また、単一の数式では表現するのが困難なマルチ条件論理を含む基準カウントにも対応できます。VBAは、各表示行を繰り返し処理し、条件をテストし、効率的に合計を計算することができます。これは、繰り返しのレポート作成タスクや要約計算の自動化に特に適しています。
利点: 大規模なデータセット、複数または動的な基準、複雑な論理を簡単に処理可能;数千行でもプロセスが迅速に実行される;手動での数式変更によるエラーのリスクを軽減。
制限: マクロを有効にする必要がある;一部のユーザーはVBAに慣れていなかったり、適切な権限を持っていなかったりする;変更にはマクロエディターへのアクセスが必要。重要なデータセットでVBAを実行する前に必ずバックアップを取ってください。
1. 始めるには、開発ツール > Visual BasicをクリックしてVBAエディターを開きます。表示されたウィンドウで、挿入 > モジュールに移動し、次のコードを新しいモジュールに貼り付けます:
Sub SumVisibleByCriteria()
Dim ws As Worksheet
Dim rng As Range
Dim cell As Range
Dim criteriaColumn As Range
Dim sumColumn As Range
Dim criteriaValue As Variant
Dim total As Double
Dim lastRow As Long
Dim criteriaColNum As Integer
Dim sumColNum As Integer
On Error Resume Next
xTitleId = "KutoolsforExcel"
Set ws = Application.ActiveSheet
' Prompt user for criteria column and sum column
Set criteriaColumn = Application.InputBox("Select the criteria range (e.g., A2:A100):", xTitleId, Type:=8)
Set sumColumn = Application.InputBox("Select the values range to sum (e.g., D2:D100):", xTitleId, Type:=8)
criteriaValue = Application.InputBox("Enter the criteria value to match:", xTitleId, Type:=2)
If criteriaColumn Is Nothing Or sumColumn Is Nothing Or criteriaValue = "" Then
MsgBox "Operation cancelled.", vbInformation, xTitleId
Exit Sub
End If
If criteriaColumn.Rows.Count <> sumColumn.Rows.Count Then
MsgBox "Criteria and sum ranges must be the same number of rows.", vbCritical, xTitleId
Exit Sub
End If
total = 0
For Each cell In criteriaColumn
If Not cell.EntireRow.Hidden Then
If cell.Value = criteriaValue Then
total = total + sumColumn.Cells(cell.Row - criteriaColumn.Cells(1).Row + 1).Value
End If
End If
Next cell
MsgBox "The sum of visible cells matching the criteria is: " & total, vbInformation, xTitleId
End Sub
2をクリックします。 「実行」ボタン(または F5を押して)コードを実行します。ダイアログが表示され、基準範囲(例:商品名)、合計する値の範囲、およびフィルタとして使用したい値(例:「Hoodie」)を選択するよう求められます。マクロは、基準が満たされている表示行のみを合計し、ポップアップメッセージに結果を表示します。
実践的なヒント: データやフィルタを変更した後に合計を再計算する必要がある場合、このVBAコードを使用してください。さらに、入力プロンプトや論理条件を追加することで、VBAコードを複数の基準に対応するように拡張できます。
トラブルシューティング: 常に選択した基準と値の範囲がフィルタリングされたデータと同じ行数を持ち、同じ列に属していることを確認してください。コードがエラーを報告するか、期待される合計を返さない場合、フィルタ設定とアクティブな選択を再度確認してください。
まとめの提案: 繰り返し表示のみの計算を必要とするデータ分析では、このマクロを個人用マクロブックに保存することで、日々のレポート作成を高速化できます。ダイアログが表示されない場合は、マクロ設定とセキュリティ許可を確認してください。
最高のオフィス業務効率化ツール
🤖 | Kutools AI Aide:データ分析を革新します。主な機能:Intelligent Execution|コード生成|カスタム数式の作成|データの分析とグラフの生成|Kutools Functionsの呼び出し…… |
人気の機能:重複の検索・ハイライト・重複をマーキング|空白行を削除|データを失わずに列またはセルを統合|丸める…… | |
スーパーLOOKUP:複数条件でのVLookup|複数値でのVLookup|複数シートの検索|ファジーマッチ…… | |
高度なドロップダウンリスト:ドロップダウンリストを素早く作成|連動ドロップダウンリスト|複数選択ドロップダウンリスト…… | |
列マネージャー:指定した数の列を追加 |列の移動 |非表示列の表示/非表示の切替| 範囲&列の比較…… | |
注目の機能:グリッドフォーカス|デザインビュー|強化された数式バー|ワークブック&ワークシートの管理|オートテキスト ライブラリ|日付ピッカー|データの統合 |セルの暗号化/復号化|リストで電子メールを送信|スーパーフィルター|特殊フィルタ(太字/斜体/取り消し線などをフィルター)…… | |
トップ15ツールセット:12 種類のテキストツール(テキストの追加、特定の文字を削除など)|50種類以上のグラフ(ガントチャートなど)|40種類以上の便利な数式(誕生日に基づいて年齢を計算するなど)|19 種類の挿入ツール(QRコードの挿入、パスから画像の挿入など)|12 種類の変換ツール(単語に変換する、通貨変換など)|7種の統合&分割ツール(高度な行のマージ、セルの分割など)|… その他多数 |
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、PowerPoint用アドインとOffice Tab Proが含まれます
- 1つのインストーラー・1つのライセンス —— 数分でセットアップ完了(MSI対応)
- 一括管理でより効率的 —— Officeアプリ間で快適な生産性を発揮
- 30日間フル機能お試し —— 登録やクレジットカード不要
- コストパフォーマンス最適 —— 個別購入よりお得