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

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

エクセルの文字(型)と数値(型)に付いて

2009-02-20 08:21:54 | ITについて

エクセルの計算(複数条件指定での合計処理)エクセル(データベース関数DSUM関数とSUMPRODUCT関数)で、二つの関数の紹介と特徴を掲載した。元々は、新会社設立で、一緒に仕事をした、若い後輩の女性が、めでたく寿退職したが、その引継ぎが十分できていなかった事もあり、私にヘルプがかかった。

エクセルの実践的応用で実務での効率化が図れればと思い、引き受けた。本来は、必ずしも私が対応する話ではなかったのだが・・・。

既に、「自動抽出で計算できる様になって無事終了」と思っていたが、そうは問屋がおろさなかった。

エクセルのバグと言うか仕様と言うか、問題が発生した。どちらの関数を使うにしても、条件検索で合計を自動計算する為に、エクセルの致命的欠陥が分かり、急遽追加の対応をせざるを得なくなった。

データベースの場合は、各レコードのテーブル定義で、文字型や数字型を明確にする為、問題は発生しないのだが、エクセルの場合は、セルの書式が「標準」と言う便利さの裏返しで、この文字型と数字型を見た目や、セルの書式では判断する事は出来ない。

明らかな文字(型)の場合、例えば年が”2009年”の入力であれば、文字型となるし、漢字やアルファベット(数字を除く)の場合も自動的に文字(型)となる為問題は発生しない。

問題は数字の場合である。どう言う事かと、セルの書式で標準で入力して、文字(型)として変更しても、文字型とはならない事であり、これが検索時の問題を引き起した。最初から分かっていた事であり、対応したつもりで有ったが、対応が不完全であり、これが問題となってしまった。

単純な例を挙げると、

  1. 標準のまま(つまり書式を設定しない)で数字を入力する -> 当然数字となる。
  2. この入力済みのセルに対して、書式変更で文字列に設定しても、数字(型)のままであり、文字型とは認識されない。しかも問題はプロパティで、書式を見ると、文字(型)となっており、数字を判別できない。いったん入力した数字を削除して再入力すると初めて文字(型)となる。
     
  3. 最初にセルの書式を文字(型)に設定して、数値を入力するば、文字型となる。

と言うような事から、通常は数字(型)は右詰となり、文字型は左詰となるが、書式で中央ぞろえを選択していた場合は、画面やセルの書式を見ても、数字(型)か、文字(型)か一切判別が不可能である。

とても小さいような事であるが、複数の関連子会社からエクセルデータを貰って、調べて見ると、確かに同じ列に両方の型が存在する事が分かった。

簡単な例題であるが、寿退社の女性が、年と月を文字列で書式を指定した事から、この問題は発生したのであるが、上記2を知らない人が処理をすると、この混在が発生し、正常に検索が機能しない事が判明した。

エクセルのオートフィルターでは、どちらでもうまく処理できるが、関数を使用した場合は、文字(型)と数値(型)は判断方法が異なる事になる。つまり、文字型であれば、判定条件で例えばセルA1=”2009”となるが、数値(型)はA1=2009となる。もちろんこの対象とする2009をセルに入れた場合にA1のセルが文字(型)か数値(型)かの設定で、条件検索がうまくいかない。

これは仕様と思えばよいのか、バグと考えて、対処を打つべきなのか分からないが、寿退社の女性が何故文字型にしたのかが最大の疑問でもあるが、今となっては仕方がない。

TYPE関数で、指定のセルの形式を判断して、ダミーの列を作り、文字(型)の場合はVALUE関数で数値(型)に強制変換する事で処理する事にした。

この話は小さい事ではあるが、予想以上の問題でも有ったが、元を正せばエクセルの仕様がバグに等しいが、それを知らない方も多くいる為、問題が発生する為、仕方がない。


最新の画像もっと見る

コメントを投稿