• ベストアンサー

マクロのシートから関数で転記

 初めまして、よろしくお願いします。  マクロ(?)のシートで上の行から自動で挿入されていくシートから、別のシートで関数を使い、数字を取り出そうとすると、(例=Sheet1!A2)マクロシートで自動でデーターが挿入されていくごとに別のシートに入力している関数までもがつられて指定範囲が下に移動されていってしまいます。(例=Sheet1!A8   A2から順にA3、A4・・A8と言うように)何とか移動しないようにできないでしょうか。よろしくお願いします。

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

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.3

#1のご回答のように、 =INDIRECT("Sheet1!A1") などとすれば、その上行に行挿入されてもA1の1は文字列定数なので 変わりようがありません。 =INDEX(Sheet1!$A$1$A$10,1,1)としても A1の上に行挿入すると =INDEX(Sheet1!$A$2:$A$11,1,1) と1ー>2、10->11と変わります。 実質前と同じセル内容になりますが。 =INDIRECT("Sheet1!A1") の方が明確かなと思いました。もちろん厳密には用途によります。 ーー >マクロ(?)のシートで マクロシートは最近では使われていない言葉ではないですか。 どういう意味でしょう。 http://support.microsoft.com/kb/288400/ja などもあるが エクセル 4.0 マクロの時代のマクロシートでは使われたが15年ぐらい前の話です。今もエクセル 4.0 マクロを使う例が出ますが。 あるいは関数式の入ったシート、VBAモジュール(マクロ)があるということ?いまマクロコードを作っている? しかし関係なさそうですね。

kei__2000
質問者

お礼

回答ありがとうございました。解説まで付けて頂き、大変助かりました。

その他の回答 (2)

noname#176215
noname#176215
回答No.2

=INDEX(Sheet1!A:A,2) でどうですか? 揮発性の関数ではありませんので INDIRECTのように 逐一再計算が入りません。処理の負担を考える場合はお勧めです。

kei__2000
質問者

お礼

回答ありがとうございました。参考にさせて頂きたいと思います。

noname#62235
noname#62235
回答No.1

INDIRECT関数を使うのが一番簡単です。 =Sheet1!A2 となっているところを =INDIRECT("Sheet1!A2") と修正してみてください。

kei__2000
質問者

お礼

 回答ありがとうございました。参考にさせて頂きたいと思います。

関連するQ&A