- ベストアンサー
エクセルで他のシートを動的に参照する(シート名だけ)
http://oshiete1.goo.ne.jp/qa921075.html に「エクセルで他のシートを動的に参照するには」 という質問で =INDIRECT(A1&"!"&B1) と入力することで 例えば a1="いちまいめ" b1="d5" と入っていれば =いちまいめ!d5 と同じ意味に動的に出来るとありましたが シート名の参照だけを動的にしたい場合はどうすればよいのでしょうか? ただし =INDIRECT(A1&"!d5")とすると 上下左右にコピーした際も d5 が 例えば d6 d7 d8 d9 ... と相対的に変わってくれないのでNGです。 また =INDIRECT(A1&"!"&B1) のままで b1 b2 b3 b4 b5 にそれぞれ "d5" "d6" "d7" "d8" "d9" と入れておく などという、計算エリアを別にもう1つ使うやり方や A1から参照する以外の汎用性がないもの(例えばrow()なんかを 使うとコレに陥りやすい)もNGです。 ごちゃごちゃと注文が多い上に解りにくいですがどうぞご教授 下さいませ。 よろしくお願いいたします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
=INDIRECT(A1&"!"&B"&ROW(A1)) または =INDIRECT(ADDRESS(ROW(A1),2,,,A1)) で =いちまいめ!B1 になります。 上記を下方にずらすとA1がA2,A3と変わり参照先もB2,B3に変化します。
その他の回答 (1)
- Cupper
- ベストアンサー率32% (2123/6444)
セルの参照位置の指定については、ROW関数やCOLUMN関数で行や列の位置を抽出して計算に利用するなどの方法で解決できます。 その場合、ADDRESS関数やOFFSET関数も有用かもしれません。 例: =OFFSET(INDIRECT(A1&"!"&"B1"),ROW(A1)-1,COLUMN(A1)-1,1,1) =INDIRECT(ADDRESS(ROW(A1),COLUMN(A1)+1,,,A1)) など ANo.1 mshr1962さんの回答の一部を訂正させてもらいます。 ※mshr1962さんの回答はいつも参考にさせてもらっています。正直ADDRESS関数は念頭にありませんでした。 些細な問題で、自動で修正されますが…ダブルクォーテーションが不足していますね。 =INDIRECT(A1&"!"&B"&ROW(A1)) ↓ =INDIRECT(A1&"!"&"B"&ROW(A1)) または =INDIRECT(A1&"!B"&ROW(A1)) 列の参照が 2に固定されていますので常時B列参照になっています。 =INDIRECT(ADDRESS(ROW(A1),2,,,A1)) ↓ =INDIRECT(ADDRESS(ROW(A1),COLUMN(A1)+1,,,A1))
お礼
アドバイスありがとうございます。 丁寧な回答感謝いたします。 本当は何でもかんでも人に聞いてしまうのは正直 やってしまいたくないのですが どうしてもアイデアが出ない、あるいはまた もともとそれに関しては応用方法の種類が頭の中に 備わっていないなんてことが多く、 やむにやまれず質問してしまいます。 今回の件でも、相当(一日思案し、3時間ほどネットで 調べたり・・・)考えたのですが、なにぶんまだまだ 至らないものでで結局答えが出ず・・・。 答えを教えてもらってしまえばものすごく簡単だったりするのが またかえって悔しいです…。 Cupper より頂いた新たな式や発展した式も色々試したいと思います。 ありがとうございました。
お礼
早い回答ありがとうございます。 多少訂正を加えて試してみましたところ うまくいきました♪ 何かを作りたいと思うとどんどん思いが発展し あれこれついやりたくなります。 思い立っても一般てきな記述意外を考え出すのが なかなか至難の業です。 というのもやはり、知っている関数であっても一般的な 記述方法しかわからす、配列にしてみたり驚くような 組み合わせにしてみたりなかなか思いつかないものですね♪ ありがとうございました。