Judas002214

配列数式に至るまで

仕事で「二つの日付が一致する行をカウントする」という処理について、上司から相談を受けた。
上司にはいったんcountifsと作業列を使った方式を提案し、それで事態は解決に向かったわけであるが、しかし何かもうちょっとシンプルな方法があるはず……と探して、結局「配列数式」を使えば解決できる、とわかった(上記画像)。シンプルな方法とは言いがたいが、まぁ解決ではある。

上司は「だいぶ検索したけれど見つけられなかった」と言っていたので、ふと自分のGoogle検索の履歴から、どのようにして私がこの「配列数式」というソリューションに至ったかを記す。web検索のコツを示す一つの例となれば幸いである。

「countifs 使い方」

まず私はcountifsの使い方の中で、そうした「範囲を指定して条件式を作る」ようなやり方を探した。
複数条件でCOUNTIF−COUNTIFS関数:Excel(エクセル)の関数・数式の使い方-統計
ExcelのCOUNTIFS関数の使い方
あまり良い結果が得られない。Excelの知識から「範囲」「参照」という単語が関係ありそうだと判断して検索しなおすことにした。

「Excel 範囲指定」

ワークシートのセル、セル範囲、行、または列を選択する
これもまたビミョウである。「指定」という単語は「マウスでセルを選ぶ」ことを意味するようだ。数式内でセルを指定するには「参照」という単語の方が良さそうだ。

「excel 範囲を参照」

Office TANAKA – Excel Tips共通範囲の参照
「参照演算子」という単語が登場した。これを心に留めておいて、もうちょっと卑近な表現を試してみることにする。

「Excel 範囲マイナス範囲」

Excelで知っておくと便利な10個の小技!覚えておけば作業効率UP!
プラス・マイナス10%の誤差を表示させるには? | エクセルexcel関数 マクロ vbaの使い方なら!
SUMIF関数の使い方 初心者のエクセル(Excel)学習・入門
今ひとつ求める結果ではなかった。やはり「参照演算子」という方を試してみることにしよう。

「Excel 範囲参照 演算子」

エクセル中級3:関数の構造・計算演算子
惜しい。表現を変えてみよう。

「セル範囲の参照演算子 引き算」

数式の概要
「数式に配列数式および配列定数を使用する」という項目があり、ここに「配列数式」という表現が登場する。「配列」というのは数学で習う「行列」と似た発想だが、これが狙ったものに近い、と判断した。この判断にはだいぶExcelやプログラミングの知識が必要なので、必ずしも上司に見つけられるとは思わない。

「countifs 配列数式」

CountIf Sumproduct 複数条件 カウント エクセル Excel エクセルの学校
{=COUNTIF(IF(A4:A120=2,J4:J120,””),1)}という配列数式を使いたい… – Yahoo!知恵袋
Mr.Big~小技集・配列数式~
日経PC21 / 配列数式で条件に合うデータの最大や最小、件数を求める
だいぶ近づいてきた。Countif関数では配列数式が使えないこと、Count関数では使えることがわかってきた。

「count 配列数式」

COUNT
ここまでで検索はおしまい。配列数式を使って解決ができそうだという目処がたったので、実際にExcelで手を動かして関数を作ってみた。最終的に配列数式で求める機能を実装するまでには少し時間がかかったが、なんとかやりおおせた。

結果としては、「配列数式」を使ったExcelシートというのはメンテナンス性があまりよろしくない。自分一人で使う分にはいいのだが、他の人間に触らせるExcelファイルだと、その人が「配列数式」を理解していない可能性が高い。何かの拍子に配列数式を壊してしまうと戻せなくなる恐れがある。というわけで今回は自分の勉強になっておしまい。上司にも一応は見せたが、作業列の方をおすすめしておいた。

[EOF]