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?

More than 3 years have passed since last update.

スプレッドシートでCOUNTIFを配列対応させる

Posted at

TL;DR

Googleスプレッドシートでcountifに対してArrayFormulaを使って配列対応をさせようとすると失敗する。
GASで配列関数に対応した自作関数を定義してみたら、できた。

やりたいこと

countifで条件に一致するセルの数を集計したい。
1行ごとに関数を入れていけばよいが、新たに行を挿入するときは手動で関数をベタ打ちしなければならない。

image.png

面倒なので、ArrayFormulaを使おうとするが…
もともと範囲内のセルを数える関数なので、行ごとの集計ができない。
image.png

そこで、
nxmの配列を入れるとnの列が返ってくるような関数を作りたい!
つまり、行ごとにcountifしてくれる関数がほしい!

実装

ツール > スクリプトエディタを起動

以下のコードを入力して保存する。

function COUNTIFARR(arr, str) {
  const re = new RegExp(str);
  return arr.map(a => a.filter(v => re.test(v)).length);
}

実行結果

うまく動いた!
image.png

注意

  • 配列を返す関数は、フィルターをかけるとおかしな挙動になるため注意。
  • 自作関数はスプレッドシート上ではサジェストされない(=赤線で「不明な関数」と警告が出る)が、気にせず確定すれば動く。
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?