パソコンカレッジ スタッフのひとりごと

パソコンスクールのスタッフが、
初心者から上級者まで役立つ情報をお伝えします。

セルの値を「名前」として使用する方法--INDIRECT関数(Excel2000以降)

2011-06-23 09:01:23 | エクセル

エクセルの操作に慣れてくると、あれ?こんなとき、こんなことができるといいのにな、なんて思うことがあります。

調べてみると、実際にできることもあり、エクセルって、賢いんだなと感心することがあります。

今日は、そんなネタをご紹介します。
Excel2007で説明しますが、それ以前のバージョンでもちゃんとできますよ。


さて、「売上データ」というシートに、次のような表があります。
ある会社の売上情報です。




それでは、この売上データを集計しましょう。
下の表が、集計用です。別シートに用意されているとしましょう。
注意してほしいのは、なぜか?C列~E列の見出しが、元の売上情報の列の並びと違うところです。
(普通、それはないだろうって? まあまあ、そこは、今回のネタの紹介のために大目に見てくださいな。)





皆さんもご存じの通り、商品別の合計値を出すためには、SUMIF関数を用います。

以下のように、3つの引数をきちんと設定すれば、ちゃんと答えが出ます。

ただし、この数式は、縦方向にコピーできますが、横方向にはコピーができません。
列の並びが、異なるからです。
したがって、各列の先頭のセルに手動で関数を設定する必要があります。3回は、関数を設定しなければなりません。






まあ、3回ばかり大したことはありませんが、これがもっとたくさんだったらどうでしょう?

何列にもわたって似たような関数を設定するのは、大変です。
なんとか、楽ができないものでしょうか?



数式をコピーしてすむようにするには、規則性が必要です。
列の並びが異なっていても、ある規則性がどこかにあれば、何とかなります。


たとえば、C列~E列の1行目にある列見出しを活用することはできないでしょうか?
今回のSUMIF関数では、第3引数がまさにその列名で参照できそうです。

これは、名案です。

列見出しを活用するには、セル範囲に名前を付け、その名前と列見出しを同じにしておけばいいのです。


それでは、さっそく、C列に「売上数量」という名前を付けてみましょう。

C列を選択し、「数式」タブの「選択範囲から作成」をクリックします。






「選択範囲から名前を作成」ダイアログボックスが表示されます。
「上端行」にチェックを入れると、1行目の列見出しが名前に設定されます。
「OK」を押します。






同様にD列、E列にも列見出しの名前を付けてください。

一応確認しておきます。

「数式」タブの「名前の管理」をクリックします。
以下のように、3つの名前があれば大丈夫です。






さあ、改めてC2にSUMIF関数を設定しましょう。

注目は、第3引数です。セル範囲の名前を使用するので、C1と、セル番地を使います。

これで良さそうですが、実は、これでは、正しく動作しないのです。

ううん、残念!







実は、C1の値は、「売上数量」という単なる文字列にすぎません。
第3引数に指定すべきは、「売上数量」という、セル範囲につけられた名前なのです。
だから、SUMIF関数に、「売上数量」は、文字列ではなくて、セル範囲なんだよ、と教えてあげなくてはなりません。

なんと、そんな親切な関数があるのです。
それが、INDIRECT関数です。
以下のように、修正してください。
INDIRECT(C$1) とするのです。(数式のコピーのために、複合参照を設定しました)






今度は、ちゃんと答えが出ました。
この数式は、縦方向でも、横方向でも、うまくコピーができます。(複合参照をお忘れなく!)







このように、名前とINDIRECT関数を組み合わせて使用すると、ますます作業を効率的に遂行できるときがあります。



だい

コメント (1)    この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« 意外と難しい 段落記号を含... | トップ | 今週のおすすめ記事 »
最新の画像もっと見る

1 コメント

コメント日が  古い順  |   新しい順
hru123@gmail.com (ブランド時計)
2012-02-03 10:37:49
はじめまして、とてもすばらしい記事ですね。これからも応援します!
返信する

コメントを投稿

エクセル」カテゴリの最新記事