1500mクラブ

運動不足は健康の大敵

MS-Excel の演算子「 」を使う

2006年12月03日 | デジタル・インターネット

Excelspc_1  MS-Excelで、二つの条件から数字を拾ってくる必要があったとします(ここでは10種×2種)。このとき、if文で「もし条件1が[Andy]のときは、もし条件2が[I]ならば17・そうでなければ37、[Andy]でなく[Bob]だったら、もし条件2が[I]ならば32・違ったら73、[Bob]でもなく[Casey]だったとき…」と書き連ねていけばクリアできるようにも見えるけど、実際には「関数の長さは1024文字まで」というのと、「関数の中の関数は8段階までしか深くできない」という制限があります。9種以上だと無理。もし仮に今度のMS-Excel2007で16階層まで倍増していたとしても、互換性のためにそんな無茶なことはしないほうがいいと思います。

 こんなときは、条件1や条件2に使われる[Sam][Dave]みたいな文字列を通し番号[1][2][3]…に変換するテーブルをもう一つ作って、index関数を使うと解決します。

=index(表の範囲<B2:C11>,条件1<行数>,条件2<列数>)

 画面が汚れるのを嫌って別のテーブルを作るかわりにlookupで拾ってrowとかcolumnとかから定数を引き算して…とかでもできるのかもしれませんが、でもそんな奇怪なことをしたかったんじゃない。

 演算子「 」(空白)を使いたかったのです。条件1が<A13>に、条件2が<B13>に入っているとして、<C13>に表から拾った結果を出したいとしたら、行列に統一した名前をつけて(Andy行には<_andy>、Bob行には<_bob>みたいに「項目名の前にアンダーバー'_'をつける」とかして名前をつけていく作業を10行+2列分)、その形に合わせて<C13>に

=INDIRECT("_"&A13) INDIRECT("_"&B13)

この式を。要するに「=範囲名 範囲名」と書いてある、二つの範囲名を「 」で区切っているこれは、二つの範囲名の交点を返す演算子。この間、生涯で初めて使ってみたので記念に。

コメント    この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« 恐ろしい集会 | トップ | HPプリンタ C7180 »
最新の画像もっと見る

コメントを投稿