まりふのひと

他のブックの表(リスト)を入力規制に使うには

Windows7/Excel2010 で下図のような入力用のブック「入力明細.xls」がある。

「氏名」に入力できるのは決まっているので、入力規制をしている。

この入力規制に使っているリストを、他のブック(閣僚名簿.xls)のリスト(C2:C21)を利用できないか...

※ 参考にしたWebページ

Excel ドロップダウンリストの設定方法 別ブック参照の場合」 (パソってますか? - 楽天ブログ)



  1. 入力明細.xls を開き、
  2. [数式]タブ/定義された名前Gr.の[名前の管理]をクリックする。
  3. [新規作成]をクリックする。
  4. 【名前の編集】ダイアログボックスで、下記を入力し[OK]で閉じる。
    • 名前: “閣僚リスト”
    • 参照範囲: “=[閣僚名簿.xls]名前!$C$2:$C$21”
      • 名簿は、[名前]シートに作ってある。
  5. 元に戻ったら[閉じる]。
  6. 入力規制をする C列を選択し、
  7. [データ]タブ/データツールGr.の[データの入力規制](上方)をクリックする。
  8. 【データの入力規制】ダイアログボックス/[設定]タブで、下記を入力し[OK]で閉じる。
    • 入力値の種類: リスト
    • 元の値: “=INDIRECT("閣僚リスト")”



 INDIRECT 関数
ヘルプより引用。

説明

 指定される文字列への参照を返します。セル参照はすぐに計算され、結果としてセルの内容が表示されます。INDIRECT 関数を使うと、数式自体を変更しないで、数式内で使用しているセル参照を変更することができます。
書式

 INDIRECT(参照文字列, [参照形式])
INDIRECT 関数の書式には、次の引数があります。

  • 参照文字列 必ず指定します。A1 形式、R1C1 形式の参照、参照として定義されている名前が入力されているセルへの参照、または文字列としてのセルへの参照を指定します。参照文字列に適切なセル参照を指定していない場合、エラー値 #REF! が返されます。
    • 参照文字列で他のブックを参照している場合 (外部参照)、そのブックを開いておく必要があります。参照先のブックを開いていない場合、エラー値 #REF! が返されます。
       メモ)Excel Web App では外部参照はサポートされません。
    • 参照文字列で行制限 1,048,576 または列制限 16,384 (XFD) を超えるセル範囲を参照している場合、エラー値 #REF! が返されます。
       メモ)この動作は、Microsoft Office Excel 2007 より前の Excel バージョンとは異なります。以前のバージョンでは、制限を超えた部分は無視され、値が返されていました。
  • 参照形式 省略可能です。参照文字列で指定されたセルに含まれるセル参照の種類を、論理値で指定します。
    • 参照形式に TRUE を指定するか省略すると、参照文字列には A1 形式のセル参照が入力されていると見なされます。
    • 参照形式に FALSE を指定すると、参照文字列には R1C1 形式のセル参照が入力されていると見なされます。
  • ドロップダウンリスト(入力規則)について (Excel(エクセル)学習室 / KENZO30)
    ★補足: INDIRECT関数は、検索/行列関数に分類されるものです。指定した文字列への参照を返す関数です。書式は、INDIRECT(参照文字列, 参照形式)ですが、通常の利用では引数の参照形式は省略できます。
     参照文字列(A2)によってセルに入力されている文字列を介して、間接的に名前の定義を返しています。
    これはできないだろうと思っていると、INDIRECT関数で問題が解決することがよくあります。非常に便利な関数です。覚えておいて下さい。(INDIRECT関数 → 中級23 参照)



 所感

  1. 当然のことながら「入力明細.xls」を更新する時は「閣僚名簿.xls」を開いておく必要がある。
  2. とすれば、「入力明細.xls」の中にシートを作り、「閣僚リスト」を置いた方が使い勝手はいい。
  3. 他のブックで「閣僚リスト」を使いたければ、INDIRECT 関数で参照する考え方もある。
  4. 要は、「閣僚名簿.xls」をどの程度の範囲で使うのか‥‥ であろう。
    • 共有しているのであれば、 INDIRECT 関数で参照するしかない...