0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

「表示されている行だけ」を動的に抽出するセル関数

Last updated at Posted at 2026-01-26

はじめに

Excelでフィルターや手動非表示を多用する際、SUMCOUNTが隠れた行まで計算して困ったことはありませんか? SUBTOTAL関数を使えば解決しますが、集計の種類ごとに引数を変えるのは面倒ですし、複雑な条件(FILTER関数など)と組み合わせるのが難しいのが難点でした。

今回は、「表示されているかどうか」の真偽値(TRUE/FALSE)を配列で一気に取得し、あらゆる関数に応用する最強のテンプレートを紹介します。

VBA は使いません。
純粋にワークシート関数だけで実現します。


結論:この「型」だけ覚えればいい

=LET(
  範囲, A:C,
  表示行, BYROW(INDEX(範囲,,1), LAMBDA(r, SUBTOTAL(103, r) > 0)),
  表示データ, FILTER(範囲, 表示行),
  "ここに「表示データ」を使った計算式を書く"
)

2026/1/29 追記
LAMBDAが使えないバージョン用
=LET(
  範囲, A:C,
  各行, OFFSET(INDEX(範囲,1,1), SEQUENCE(ROWS(範囲)) - 1, 0),
  表示データ, FILTER(範囲, SUBTOTAL(103, 各行)),
  "ここに「表示データ」を使った計算式を書く"
)

何ができるのか

  • オートフィルターの 現在の状態をそのまま反映
  • 表示されている行だけを 常に最新の状態で抽出
  • フィルター条件が変わっても式の修正は不要
  • 対象外にしたい行はグレーアウトし、フィルターの「色で抽出」を使えば、
    数式を変えずに簡単に除外できます

つまり、

「今、目で見えている行」=「抽出結果」

という関係を作れます。


応用例

=LET(
  範囲, A:C,
  表示行, BYROW(INDEX(範囲,,1), LAMBDA(r, SUBTOTAL(103, r) > 0)),
  表示データ, FILTER(範囲, 表示行),
  "ここに「表示データ」を使った計算式を書く"
)

表示されているデータだけを合計

SUM(表示データ)


表示されている行だけで重複を除外

UNIQUE(表示データ)


文字列連結

TEXTJOIN(",", TRUE, 表示データ)

本来は非表示無視に対応していない関数も問題なく使えます。


このように、

  • フィルター操作はシート側で行う
  • 数式は「表示データ」を前提に組み立てる

という分離ができるため、
条件変更に強く、読みやすい構成になります。

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?