名前の有効範囲−ブックレベル、シートレベルの名前が競合した場合
エクセル2007では、「ブックレベルの名前」と同じ名前を持つ「シートレベルの名前」を定義できる。
この場合、どちらも参照できるシートから参照すると、「シートレベルの名前」が優先的に使われる。


左図の「Sheet1」シートのセルA1に、ブックレベルの名前「dupName」を付ける。
「Sheet1」シートのセルA1を選択する。


リボンの《数式》タブ->《定義された名前》グループ->《名前の定義》ボタンを押す。


《新しい名前》ダイアログボックスが出てくる。《名前》に「dupName」と入力する。
《範囲》が「ブック」であることを確認し、《参照範囲》が「=Sheet1!$A$1」になっていることを確認できたら、OKボタンを押す。
これで、「ブックレベルの名前」の「dupName」ができた。


「Sheet1」シートのセルA2に対し、「dupName」という名前を、シートレベルで定義する。
「Sheet1」シートのセルA2を選択する。


リボンの《数式》タブ->《定義された名前》グループ->《名前の定義》ボタンを押す。


《新しい名前》ダイアログボックスが出てくる。《名前》に「dupName」と入力する。
《範囲》を「Sheet1」と設定し、《参照範囲》が「=Sheet1!$A$2」になっていることを確認できたら、OKボタンを押す。
これで、「シートレベルの名前」の「dupName」ができた。


「名前」がどのように定義されているかを確かめるため、リボンの《数式》タブ->《定義された名前》グループ->《名前の管理》ボタンを押す。


《名前の管理》ダイアログボックスが出てくる。《範囲》列には、名前が「どのレベルで定義されたか」が書いてある。
「ブック」と書いてあれば「ブックレベルの名前」、シート名が書いてあれば「シートレベル」であって、その名前が「有効」なシート名が表示されている。
左図の場合、「Sheet1」シートで「dupName」という名前が有効であることを示している。ブックレベル、シートレベルの名前が競合していることがわかる。


このような状況下で、「dupName」という名前が、どう扱われるか検証してみる。
「Sheet2」シートのセルB1に「=dupName」と入力する。


入力を確定すると、「Sheet1」シートのセルA1と同じ内容が表示された。
「Sheet2」シートでは、シートレベルの「dupName」は有効でないので、ブックレベルの「dupName」が使われる。


「Sheet1」シートのセルB1に「=dupName」と入力する。
すると、ブックレベルとシートレベルの名前どちらかを使うか問われるが、ここは「ワークシート」を選択すれば「=dupName」と入力されるので、「ワークシート」を選ぶ。


入力を確定すると、セルA2と同じ内容が表示された。
ブックレベル、シートレベルの名前が競合した場合、シートレベルが優先的に選ばれることがわかる。