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

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

Excelで条件に基づいて表示されているセルのみを合計するにはどうすればよいですか?

Author Xiaoyang Last modified

Excelでは、ユーザーは通常、SUMIFS関数を使用して特定の条件に基づいてセルを合計できます。しかし、フィルタリングされたデータを扱う場合、単にSUMIFSを適用すると、計算に表示されているセルと非表示のセルの両方が含まれてしまいます。下のスクリーンショットに示すように、特定の条件に一致する表示されている(つまり、フィルタリングされていない)セルのみを合計する必要がある場合、これにより誤った結果が生じることがよくあります。

フィルタリングされたテーブル内のデータを正確に集計することは、日常のレポート作成やデータ分析ワークフローにおいて一般的なニーズです。たとえば、いくつかのフィルタを適用した後、特定の製品やカテゴリーの売上金額を計算する場合などです。これを間違って行うと、意図しないデータが合計に含まれる可能性があるため、画面上に表示されている可視データのみを合計する手法を使用することが重要です。

この記事では、異なるシナリオやスキルレベルに適した実用的な方法をいくつか紹介します。それぞれに利点と可能な制限があります。ワークシートのサイズ、データ構造、操作習慣に最も適したソリューションを選択できます。各ソリューションの詳細な手順、潜在的なエラーの説明、およびより信頼性の高い結果を得るために計算プロセスを最適化する方法を以下に示します。


ヘルパーカラムを使用して1つまたは複数の条件に基づいて表示されているセルのみを合計する

特定の条件に基づいて表示されているセルを合計する最も直感的で安定したアプローチの1つは、表示されている行に対して値を返すヘルパーカラムを使用し、その後、所望の条件でSUMIFS関数を活用することです。これは、データセットが頻繁にさまざまな方法でフィルタリングされる場合や、同僚が簡単に理解したり修正できる計算を設定する必要がある場合に特に効果的です。

利点: 設定が簡単;すべてのロジックと計算がワークシート上で見えるまま;小規模から中規模の表に最適;式を調整したり監査したりする際に堅牢です。

制限: 追加のカラムを作成する;行レイアウトが変更された場合、式の更新が必要になる場合がある;非常に大規模なデータセットでは広範な使用が煩雑になる可能性がある。

例えば、フィルタリングされた範囲で「Hoodie」という商品の注文の値のみを合計したい場合:

1. データセットの隣の空白列(例:D列が値の列であると仮定してE2セルなど)に次の式を入力またはコピーします:

=AGGREGATE(9,5,D2)

オートフィルハンドルをドラッグして、この式をデータ範囲のすべての行に適用します。この式は、行が表示されている場合はD列からの値を返し、フィルタリングによって行が非表示の場合は0を返します。

A screenshot of Excel illustrating the use of the AGGREGATE formula to calculate visible cell values

2. 列Eにヘルパー値を生成した後、条件に基づいて表示されている値のみを合計するためにSUMIFS関数を使用します。たとえば、A列で「Hoodie」の合計を求めたい場合:

=SUMIFS(E2:E12,A2:A12,A17)
注意: ここで、E2:E12は新しいヘルパー列であり、表示されている行の値を含みます。A2:A12は商品/条件範囲であり、A17には対象アイテム「Hoodie」が含まれています。参照セル範囲がデータレイアウトと一致していることを確認してください。

A screenshot of Excel demonstrating the SUMIFS formula summing visible cells based on criteria

ヒント:たとえば、「Hoodie」かつ「Red」の値を合計したい場合のように、複数の条件に基づいて合計を反映させたい場合は、以下のように式を拡張してください:
=SUMIFS(E2:E12,A2:A12,A17,C2:C12,B17)

A screenshot of Excel showing the SUMIFS formula applied with multiple criteria for summing visible cells

=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にある)に次の式をコピーまたは入力します:

=SUMPRODUCT(SUBTOTAL(3,OFFSET(A2:A12,ROW(A2:A12)-MIN(ROW(A2:A12)),,1)),(A2:A12=A17)*(D2:D12))

式を入力した後、「Enter」キーを押して目的の結果を得ます。以下に示すように:

A screenshot of Excel using a SUMPRODUCT formula to sum visible cells based on criteria

注意: この式では、SUBTOTAL(3,OFFSET(...)) はどの行が表示されているかをチェックし、(A2:A12=A17) はマッチング条件を設定し、D2:D12 は合計する値の範囲です。必要な部分の参照を自分のワークシートに合わせて調整してください。
ヒント: 複数の条件に対応させるには、さらなる条件項を追加するだけです。例: =SUMPRODUCT(SUBTOTAL(3,OFFSET(reference,ROW(reference)-MIN(ROW(reference)),,1)),(criteria_range1=criteria1)*(criteria_range2=criteria2)*(sum_range))。常に括弧を使って基準が正しくグループ化されていることを確認してください。

注意: このアプローチは指定された範囲に敏感です—不一致または重複した範囲はエラーや予期しない結果を引き起こす可能性があります。特にフィルタリングによって可視行の数や位置が変わる場合、エッジケースをテストしてください。


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をクリックします。 Run button 「実行」ボタン(または F5を押して)コードを実行します。ダイアログが表示され、基準範囲(例:商品名)、合計する値の範囲、およびフィルタとして使用したい値(例:「Hoodie」)を選択するよう求められます。マクロは、基準が満たされている表示行のみを合計し、ポップアップメッセージに結果を表示します。
実践的なヒント: データやフィルタを変更した後に合計を再計算する必要がある場合、このVBAコードを使用してください。さらに、入力プロンプトや論理条件を追加することで、VBAコードを複数の基準に対応するように拡張できます。

トラブルシューティング: 常に選択した基準と値の範囲がフィルタリングされたデータと同じ行数を持ち、同じ列に属していることを確認してください。コードがエラーを報告するか、期待される合計を返さない場合、フィルタ設定とアクティブな選択を再度確認してください。

まとめの提案: 繰り返し表示のみの計算を必要とするデータ分析では、このマクロを個人用マクロブックに保存することで、日々のレポート作成を高速化できます。ダイアログが表示されない場合は、マクロ設定とセキュリティ許可を確認してください。


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

🤖 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日間フル機能お試し —— 登録やクレジットカード不要
  • コストパフォーマンス最適 —— 個別購入よりお得