• ベストアンサー

エクセル 特定の文字列から範囲を指定

エクセル 名前定義の範囲について質問です。 始まり・終わりの行・列を示す特定の文字列を設定し、 それを元に自動で範囲を変化させるようなことはできませんでしょうか。 例えば、 B1:列ここから D1:列ここまで A3:行ここから A6:行ここまで と書かれていた場合、 名前定義の範囲が自動で「B3:D6」となるような方法を探しています。 なお、 ・列を指定する文字列は必ず1行目に ・行を指定する文字列は必ずA列目に あるという想定です。 極力マクロを使用しない方法で、有効なものがございましたら ご指導のほどよろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • izmlz
  • ベストアンサー率55% (67/120)
回答No.2

=INDEX($1:$65536,MATCH("ここから",$A:$A,0),MATCH("ここから",$1:$1,0)):INDEX($1:$65536,MATCH("ここまで",$A:$A,0),MATCH("ここまで",$1:$1,0)) 参照範囲を↑にします。

参考URL:
http://www2.odn.ne.jp/excel/waza/name.html
sekarasika
質問者

お礼

お礼が遅くなってしまい申し訳ございません。 INDEX関数を使う場合、やはり初めに 「$1:$65536」のように範囲を指定する必要が出てしまいますよね。。 でも、この方法でも確かに実現できますね。 補足書き込みも含め、ご丁寧にありがとうございました!

その他の回答 (3)

  • izmlz
  • ベストアンサー率55% (67/120)
回答No.4

あたまに行/列をつけるのを忘れていました。↓が修正後の数式(名前定義の参照範囲に入力する数式)です。 =INDEX($1:$65536,MATCH("行ここから",$A:$A,0),MATCH("列ここから",$1:$1,0)):INDEX($1:$65536,MATCH("行ここまで",$A:$A,0),MATCH("列ここまで",$1:$1,0))

noname#204879
noname#204879
回答No.3

=ADDRESS(MATCH("行ここから",A:A,0),MATCH("列ここから",1:1,0),4)&":"&ADDRESS(MATCH("行ここまで",A:A,0),MATCH("列ここまで",1:1,0),4)

sekarasika
質問者

お礼

お礼が遅くなってしまい申し訳ございません。 ADDRESS関数の場合、文字列を返してしまうようなので、 冒頭にINDIRECT関数をつければこの方法でも実現できそうですね。 どうもありがとうございました!

  • keirika
  • ベストアンサー率42% (279/658)
回答No.1

シート名をSheet1とします。 名前定義の範囲として以下を指定してください。 =OFFSET(Sheet1!$A$1,MATCH("ここから",Sheet1!$A:$A,0)-1,MATCH("ここから",Sheet1!$1:$1,0)-1,MATCH("ここまで",Sheet1!$A:$A,0)-MATCH("ここから",Sheet1!$A:$A,0)+1,MATCH("ここまで",Sheet1!$1:$1,0)-MATCH("ここから",Sheet1!$1:$1,0)+1)

sekarasika
質問者

お礼

お礼が遅くなってしまい申し訳ございません。 なるほど、OFFSET関数を使えば、 数式が多少長くなりますが実現できますね。 どうもありがとうございました!