Excelの関数は配列(範囲)を入力できたり、出力できることを最近(と言っても1年前)知った。
入力はサポートが終わったExcel2010でも対応していた。
例えば、品名、単価、数量、で合計を求める集計表は品名ごとに金額を求めて、SUM関数で合計を求める。
↓こんな感じ
SUM関数に配列式を使うと、
商品ごとの金額を求めなくても、SUM関数1つで合計を求めることができる。
でも、これだけでは、あまり有り難みがないかもしれない。
Excel for Microsoft365や Excel2021では、配列を出力できるFILTER関数が使える。
表から列を条件で検索して、該当する行を抽出したいことは結構ある。
FILTER関数を使わなくてもできるけど、作業用の列が必要で、かなり面倒だから、FILTER関数だけで実現できるとありがたい。
↓は生徒を科目ごとに5段階評価した一覧表から、最も良い評価の生徒を抜き出すという例。
(5があれば5が最も良い評価だが、5がなければ4が最も良い評価になる)
セルG3に
=INDEX(FILTER($A3:$E22,RANK(B3:B22,B$3:B$22)<=$H$1),,1)
を入力して、H3からJ3にコピーすると作業用の列やシートがなくても抽出することができる。
ところが、この式を一発で入力することは難しい。
実際にこの式を入力するために、作業用の表を作った。(^^;
仕事でユーザが更新した一覧表を基にメールの設定を行うという作業がある。
行(レコード)が挿入、削除されたり、項目が変更されるのだが、一覧表が大きくなると、変更部分がわからないくなる。
これまで目視で変更部分をチェックしていたらしい。
はっきり言って、目視のチェックは人間の仕事ではない!!
ということで、FILTER関数とVLOOKUP関数を組み合わせて変更部分を抽出するシートを作った。
30分でできると思ったら、1日近くかかってしまった。orz
プログラムが書けるならVBAやPowerShellで処理するほうが楽だと思った。
ここから本題
FILTER関数はマクロやスクリプトと比べてわかり易いわけではない。
説明なしに上のようなシートを受け取ったら、マクロやスクリプトと同じように「ナンノコッチャ」である。
FILTER関数に限らず、受け取った人が理解できないなら、ブラックボックス化するしかないのだが、Excelなら誰かがメンテナンスできると誤解している人は多い。
後々メンテナンスできなくなるからと、スクリプトやRPAを使うことをためらう人がいたりする。
Excelは個人作業は効率化できるけれど、業務フローを変えることは難しい。
ExcelかRPAかではなく、業務フローを変えるために必要なことは何かを考えることが必要だ。
【最近の投稿】【プログラミング】【2019の投稿】【2018の投稿】【2017の投稿】【2016の投稿】【2015の投稿】
最近のコメント