フォト
無料ブログはココログ

« 2022年の目標 <いつでも変われるように> | トップページ | スマホ用拡大鏡 »

2022年1月 6日 (木)

Excelの配列式

Excelの関数は配列(範囲)を入力できたり、出力できることを最近(と言っても1年前)知った。

入力はサポートが終わったExcel2010でも対応していた。

例えば、品名、単価、数量、で合計を求める集計表は品名ごとに金額を求めて、SUM関数で合計を求める。
↓こんな感じ

Sum1

SUM関数に配列式を使うと、

Sum2

商品ごとの金額を求めなくても、SUM関数1つで合計を求めることができる。
でも、これだけでは、あまり有り難みがないかもしれない。

Excel for Microsoft365や Excel2021では、配列を出力できるFILTER関数が使える。

表から列を条件で検索して、該当する行を抽出したいことは結構ある。
FILTER関数を使わなくてもできるけど、作業用の列が必要で、かなり面倒だから、FILTER関数だけで実現できるとありがたい。

↓は生徒を科目ごとに5段階評価した一覧表から、最も良い評価の生徒を抜き出すという例。
(5があれば5が最も良い評価だが、5がなければ4が最も良い評価になる)

Photo_20220105222202

セル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の投稿

« 2022年の目標 <いつでも変われるように> | トップページ | スマホ用拡大鏡 »

プログラミング」カテゴリの記事

コメント

コメントを書く

コメントは記事投稿者が公開するまで表示されません。

(ウェブ上には掲載しません)

« 2022年の目標 <いつでも変われるように> | トップページ | スマホ用拡大鏡 »