8. セル範囲の名前 

   8−1  セル番地の名前
   8−2  セル範囲の名前
   8−3  名前の及ぶ範囲
   8−4  名前の編集・削除
   8−5  名前を付けるメリット


8−1  セル番地の名前

単一のセル番地は「名前」を持つことができます。
第5章「偏差値計算」の例で用いた表のセルに名前をつけてみましょう。

(例)第5章の状態
 セル B2B41 に得点データが記述されています。
 セル B42 に =AVERAGE(B2:B41) が記述されています。
 セル B43 に =STDEV(B2:B41) が記述されています。
 セル C2 に =(B2-B$42)/B$43*10+50 が記述されています。
 セル C3 に =(B3-B$42)/B$43*10+50 が記述されています。
 セル C4 に =(B4-B$42)/B$43*10+50 が記述されています。
 セル C5 に =(B5-B$42)/B$43*10+50 が記述されています。
 ABCD
1氏名 得点 偏差値 
2 生徒氏名1 65 52.47  
3 生徒氏名2 23 32.90  
4 生徒氏名3 90 64.12  
5 生徒氏名4 69 54.33  





42    平均 58.10    
43  標準偏差 21.45    

(1) セルB42にカーソルを合わせ、画面(ウィンドウ)左上の「名前ボックス」に
  「B42」と表示されていることを確認します。
(2) 名前ボックスをマウスでクリックし、編集状態にします。
(3) 「平均」と入力し、[Enter]キーを押します。

  

これで、絶対番地$B$42に「平均」という名前が付きました。
同様に、絶対番地$B$43に「標偏」という名前が付けましょう。
名前は、数式や関数の引数でセル参照と同じように記述することができます。

 C2 に =(B2-平均)/標偏*10+50 と記述することができます。
 C3 に =(B3-平均)/標偏*10+50 と記述することができます。
 C4 に =(B4-平均)/標偏*10+50 と記述することができます。
 C5 に =(B5-平均)/標偏*10+50 と記述することができます。


8−2  セル範囲の名前

セル範囲も名前を持つことができます。
第7章「評定計算」の例で用いた検索表に名前をつけてみましょう。

 AB
2 01
3302
4453
5704
6855
7100.1#N/A
セル範囲 A2:B7 を範囲指定してから、前節と同じように名前付けをします。 名前ボックスにはカーソル位置のセル番号が表示されているはずですが、そこに 「検索表」という名前を入力します。

セル範囲$A$2:$B$7検索表という名前が付くと、C列に置く VLOOKUP関数は、次のように記述することができます。

  C11 に  =VLOOKUP(B11, 検索表, 2) と記述できます。
  C12 に  =VLOOKUP(B12, 検索表, 2) と記述できます。
    :
    :


8−3  名前の及ぶ範囲

「名前」は各ワークシートごとではなく、ファイルレベルで管理されています。 従って、セル番地、セル範囲に付けられた名前の保持する情報は
  =シート名!絶対番地
という形式のアドレスです。名前は通常、どのワークシートから参照しても、 ファイル上の唯一の場所を指し示します。
名前ボックスの右にある[▼]ボタンをクリックすると、ファイルに設定されて いる名前の一覧がドロップダウン表示されます。ここで名前を選ぶと、名前に 結び付けられたセル番地またはセル範囲にジャンプすることができます。

  

ところが、ワークシートをコピーすると、複数のシートに「同じ名前」ができて しまうことがわかっています。ファイルが同じ名前を複数持ってしまうとちょっと やっかいです。

(例)シート名「Sheet1」 に名前「平均」(参照先:=Sheet1!$B$42)がある
    ↓
  「Sheet1」をコピーして、シート名「Sheet4」を作成
    ↓
  「Sheet4」に名前「平均」(参照先:=Sheet4!$B$42)ができる

Sheet4 の内部では、「平均」という名前は =Sheet4!平均 を指し示します。 Sheet4 の数式で Sheet1 の「平均」を参照したい時は、=(ファイル名)!平均 と記述しなければなりません。例えばファイル名が abcd.xls だったとすれば、 =abcd.xls!平均 となります。
一方、他のワークシート上でどうしても Sheet4 の「平均」を参照したい場合は、 =Sheet4!平均 と記述する必要があります。

このことはしばしばわかりにくい参照ミスの原因となります。無用の混乱を避けるには、 複数のワークシートに同名の名前を設定するべきではありません。
名前を持ったワークシートをコピーした時は、どちらかの名前を削除し、必要に応じて 新しい名前を設定しておきましょう。


8−4  名前の編集・削除

一度設定した名前を削除したり、別のセル範囲を示すように変更したい時は、
   [挿入(I)]-[名前(N)]-[定義(D)...]
で編集します。

  



8−5  名前を付けるメリット

セル/セル範囲に名前を付けるメリットは、
 ・数式の可読性が上がる(例えば何の計算をしているか直感的にわかる)
 ・数式を書く時、参照セル範囲を意味ある言葉で覚えておきやすい
 ・よく使う範囲、例えば印刷範囲等を瞬間的に指定できる
 ・マクロを書く時とにかく便利

などです。
ちなみに、セル/セル範囲をカット&ペーストで移動したり、列を挿入/削除して 位置が変わったりした時は、名前が保持する参照アドレスもそれに応じて変更されます。 これは、数式に記述された参照セル範囲が手作業で修正しなくても自然に変化して くれるのと同じことです。

(例)名前「平均」(参照先:=Sheet1!$B$42)がある
    ↓
  31行目に行を10行挿入する
  これにより$B$42だったセルは$B$52に移動
    ↓
  名前「平均」の参照先は =Sheet1!$B$52 になっている

(例)名前「印刷範囲」(参照先:=Sheet1!$B$1:$H$41)がある
    ↓
  E列〜G列を削除する(BCDEFGH)
  H列だった列は、3列つまってE列になる
    ↓
  名前「印刷範囲」の参照先は =Sheet1!$B$1:$E$41 になっている

マクロに記述した数式の中のセル参照は、セルの移動や行/列の挿入・削除といった 操作をした時も、自然に書き換わってはくれません。 ですから、マクロの中のセル参照を「名前」で記述しておくのは非常に生産性のある ことです。

(例)「 Range("B1:H41").PrintOut 」というマクロを書いた
    ↓
  E列の隣に2列挿入する
  H列にあるセル範囲は、右に2列分ずれてJ列になる
    ↓
  マクロは「 Range("B1:H41").PrintOut 」のまま
  実行してもJ列(元のH列)は印刷範囲から外れる

(例)名前「印刷範囲」(参照先:=Sheet1!$B$1:$H$41)がある
    ↓
  「 Range("印刷範囲").PrintOut 」というマクロを書いた
    ↓
  E列の隣に2列挿入する
  H列にあるセル範囲は、右に2列分ずれてJ列になる
    ↓
  名前「印刷範囲」の参照先は =Sheet1!$B$1:$J$41 に変化
  マクロを実行したらJ列まで印刷される