質問: エクセル2007 offset関数 indirect関数 エクセル2007でoffset関数とindirect関数を用いてセルの入力規則をして、リスト表示したいと思っています。 入力規則のリストは動的な値を設定したいと思っています。 abcde 1あいうえお 2かきくけこ 3さしすせそ 4たちつてと 5なにぬねの というシートa列に”データベース1”b列に”データベース2”・・・といった具合に名前を定義します。このデータベースは行がどんどん増えていく可能性があるため、名前の定義の参照範囲欄に (1)=offset($a$1,0,0,counta(a:a),1) としました。 別シートに 表示したいセルで入力規則→設定タブ→入力値の種類→リストを選択。 元の値の欄に (2)=indirect(a2&"1",false) としました。 ※a2は”データベース”と入力してあるセルです。 ここからがわからないのですが 上記式(1)、(2)の両方とも単独で使用した場合は欲しい値が得られるのですが、組み合わせて使用した場合はリストが出てこなくなってしまいます。 1)組み合わせて使うことはできないのですか 2)ほかにいい方法はありますか ということを質問します。 よろしくお願いします。
回答: 確認して見ました。 確かに、offsetを使った名前定義は、入力規則の参照先をindirectで定義できませんね。 indirectはそのままにして、名前定義の範囲設定をvbaでやらせてはいかがですか。 リストがあるシートの worksheet_change に、↓でいけると思います。 activeworkbook.names.add name:="データベース1", referstor1c1:="=r2c1:r" & range("a65536").end(xlup).row & "c1"