社会不安障害:SAD、ボランティアとセカンドライフ

SADで会社を休職したが、一年で復帰し、無事定年を務めて、その後の生活とボランティアについて気ままに掲載中

エクセル(データベース関数DSUM関数とSUMPRODUCT関数)

2009-01-25 14:08:27 | ITについて

エクセルの計算(複数条件指定での合計処理)で、はまりDSUM関数とSUMPRODUCT関数を調べる事にした。ネットで”エクセル” ”複数条件” ”合計”等で検索すると多くの結果が出てくる。大体は前回述べたような答えに絞り込まれ、関数で処理しようとすると、配列関数(配列数式)とデータベース関数であるDSUM、SUMPRODUCTと言うところに落ち着くのではないかと思っている。一般的には配列関数に関しては余り使用したがらない傾向があるようで、私もその一人である。

配列関数とは、SUMIF関数(もともと一つしか条件を指定できない関数)等にこの配列関数で複数条件をSUMPRODUCT関数と同じように”*”で連結していき、最後はCTRL+SHIFT+RETURNキーを押すような形で使う物であるが、本来できないものを特殊な形で使うのも面白く無い事と、他の人に説明したり、見てすぐわかる物でもない為、チョットむずかしいと私的には思うからである。もっともそれを言うとSUMPRODUCT関数の使い方も裏技的ではあるが・・・。

と言う事でエクセルの計算(複数条件指定での合計処理)で予告したようにDSUMとSUMPRODUCT関数に関してテストしてみた。結果今回はSUMPRODUCT関数を使用することにした。

DSUM関数 SUMPRODUCT関数
検索する配列に含まれるデータ NULL(空白)、文字列など型違いでもOK
例:2009を検索するとして、数字型の所の一部に”未定”のような文字型が入っていても、条件が合わないだけ。
 〃
エラーがあってもOK エラーが一つでもあるとエラーとなる
合計配列に含まれるデータ NULL(空白)、文字列など型違いでもOK  〃

複数条件に全て合致し、且つその合計配列の該当する列(合算される対象セル)にエラーがあった場合のみエラーとなる

エラーが一つでもあるとエラーとなる。
複数条件に合致しない合計配列にエラーがあっても問題はない。 エラーが一つでもあるとエラーとなる。
合致する物が一つも無い場合 #VALUE(バリューエラー)となる。 0となる。
条件式の指定 別のセルに必ず記述し、その記述された範囲を、DSUM関数で指定する。逆を言えば、簡単な記述ではよいが、複雑で定型の繰り返し的な要素は向かない。最も、条件となる配列を、別に隠してしまうなど、手はあるが・・・。 条件を中に埋め込む事もセルで指定する事もできるため、自由度が高い。毎週や毎月決まった集計を行なう場合は、有利。
検索する配列指定 検索する範囲を、列毎で指定するわけでは無いので、その範囲内に、同じような要素の列があった場合に重複してしまう(ダブルカウント)可能性がある。
例:当初完成日、修正完成日等が同じ検索範囲内にあれば、間違いの元となる。
検索する範囲を列毎で指定できるので、先のような問題は起きない。

上記結果、特に4と5から、SUMPRODUCTを使用する事にした。従って、問題となるのはセル内にエラーを発生させない事である。

送られてくる元データは全て手打ち(数値や文字)の為、エラーはない。その代わりに、商品名(機種名)のブランク、”-”等での記載、同様に台数の所も通常は数字になる所が、ブランクや”未定”、”-”等となっている。

これらは、上記の様に判定上は問題が無いので、その元デーから、右側に付け足してい列が5つ程あり、この列にVLOOKUP関数やOR関数等で、別の表(シート:商品マスター、卸データ表)等からデータをくっ付けていた事が分かる。

寿退社予定の休職消化中の方が苦労して、自分で関数を勉強して作り上げたのだと推定するが、いつも仕事に追われている中では、これが精一杯であったと思う。

と言う事で、付加されていた関数をすべてエラーが発生したら、空白にするように修正した。つまりはISERROR関数をIFと組み合わせてIF(ISERROR(・・・ で処理し、全て関数のエラー表示が空白に変わった。

不思議なのは、この空白の前は#VALUE!が発生していたが、この意味するのはVLOOKUP関数やOR関数で条件検索で一つも引っ掛からない場合のはずで、通常のエラーは#N/Aのはずであるが、考えるに、条件に引っ掛かる前に型の方でエラーを起していると考えられる。

最も型でエラーを起していても、#VALUE!以外はチャンと検索できている為、エラーの所は元のセルの型が違う=異なる文字や数字が入っている事から問題はないと考えた。

これで、引き継いだ方の仕事は、殆ど瞬時に出来るようになる事が、分かった。もちろんまだやる事が残っているが・・・。

いずれにしても最後まで面倒見る予定である。これが私の仕事なのだと言う事と最後までやる事により、感謝してもらえれば幸いである。

一方、当グループの同僚にも教えてやる必要があるが、昨年あえて、皆からのヘルプがない限りフォローする事はしなかった。おそらく皆、自分で手作業で処理していると思う。それだけ優秀でもあると思う反面、個人のノウハウは知れている。今回の方の方が私に取ってはありがたいし、結果は、効率化が激的に変わるはずである。

徹底的に無駄を省く、手抜きをする事を考える事が仕事が楽にする方法でもある。単純なエクセルの操作を多くの人がやっているのも確かであるが、毎回同じ様な仕事を・・・。毎回手作業で・・・。

DSUM関数やSUMPRODUCT関数を知っている人は当部の中でもおそらく数人しかいないと思われる。もちろんオートフィルターやソートは知っている人は多いが・・・。

つまりオートフィルターは便利ではあるが、その分定型処理をする場合は手作業を繰り返している事が予想される。膨大な時間の無駄であると考える。


最新の画像もっと見る

コメントを投稿