0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Googleスプレッドシート】MAP関数×LAMBDA関数で「行の重複判定」を軽量化する方法

Posted at

はじめに

Googleスプレッドシートでデータを扱う際、列内の重複を確認したいケースはよくあります。
従来は COUNTIF 関数を行ごとにコピーして対応するのが一般的でしたが、
MAP 関数と LAMBDA 関数を併用することで、数式を1行にまとめて処理できるようになりました。

この記事では、

  • 従来の重複判定の方法
  • MAPLAMBDA を使った簡潔な書き方
  • サンプルデータと表示例
    をまとめます。

サンプルデータ

下記の表を例に、B列の名前データの重複回数を求めます。
重複のあるデータを意図的に含めています。

No 名前
1 佐藤
2 鈴木
3 高橋
4 佐藤
5 田中
6 高橋
7 伊藤
8 渡辺
9 佐々木
10 山本
11 田中
12 佐藤
13 加藤
14 中村
15 小林
16 吉田
17 佐藤
18 高橋
19 渡辺
20 伊藤

従来の方法:COUNTIFを1行ずつコピー

従来はC列に以下の式を記載し、行ごとにコピーしていました。

=COUNTIF($B$2:$B, B2)
  • B列全体を検索範囲として指定
  • 対象セルの値をカウント
  • 数式を必要な行までコピー

この方法でも目的は達成できますが、
データ件数が増えると数式の数も増え、計算負荷が高くなりやすいのが課題です。

新しい方法:MAP×LAMBDAで一括処理

次のように MAPLAMBDA を組み合わせることで、
同じ処理を1つの式で書けます。

=MAP($B$2:$B, LAMBDA(val, COUNTIF($B$2:$B, val)))

処理の流れ

  • MAP:範囲内の各要素に対して処理を実行
  • LAMBDA(val, ...)val に各要素を受け取り、指定した処理を返す
  • COUNTIF($B$2:$B, val):対象値の出現回数を算出

これにより、B列の各値に対するカウントを一括で計算できます。

実際の表示例

結果は以下のように表示されます。

No 名前 重複数
1 佐藤 4
2 鈴木 1
3 高橋 3
4 佐藤 4
5 田中 2
6 高橋 3
7 伊藤 2
8 渡辺 2
9 佐々木 1
10 山本 1
11 田中 2
12 佐藤 4
13 加藤 1
14 中村 1
15 小林 1
16 吉田 1
17 佐藤 4
18 高橋 3
19 渡辺 2
20 伊藤 2

1つの数式に処理を集約できるため、
シート全体の見通しが良くなり、関数管理も容易になります。

まとめ

  • MAPLAMBDA を使えば、繰り返し処理を1つの数式にまとめられる
  • 行数が多いシートでも計算負荷を抑えやすい
  • 数式の複製を減らせるため、管理性が向上

Googleスプレッドシートの新しい関数を活用することで、
複雑な処理をシンプルに記述できるようになります。
データ件数が多いスプレッドシートほど効果が大きい手法です。

0
0
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
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?