• ベストアンサー

Eecelで指定されたセル番地に入力される方法を教えてください

  A  B  C  D  E 1    A1  1 2    A2  2 3    A3  3 4    A4  4 上記のようなシートがあったとします。 B列にセル番地が入力されており、C列には数値が入力されています。 A1にC1の値=1 A2にC2の値=2 という具合に、 B列に入力されているセル番地に隣のC列の値が入力されるようにしたいのですが、どうもうまくいきません。 いい方法があったら教えてください。よろしくお願いします。 ※できれば関数で何とかしたいと思っています。 OS:Windows XP Excel2003です。

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

  • ベストアンサー
  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.3

A1:A4に =IF(ISNA(VLOOKUP(ADDRESS(ROW(),COLUMN(),4),$B$1:$C$100,2,0)),"",VLOOKUP(ADDRESS(ROW(),COLUMN(),4),$B$1:$C$100,2,0)) と式を入力すればできなくはないです。でもB列で指定したアドレス全てにこの式を入れる必要があります >できれば関数で何とかしたいと思っています。 とのことですが、B列にあるアドレスがどこを指すか不定の場合は関数では難しいのではないかと思います。やはりマクロが妥当ではないでしょうか Sub Macro1() Dim idx As Long  On Error Resume Next  For idx = 1 To Range("B65536").End(xlUp).Row   Range(Cells(idx, "B")).Value = Cells(idx, "C").Value  Next End Sub このマクロをALT+F11でVBE画面を開き、左上のVBA Projectでシート名を右クリックし「挿入」→「標準モジュール」で表示される画面に貼り付けて下さい。マクロの実行はALT+F8でマクロ一覧を開き、マクロ名を選択して「実行」ボタンです。

shino_chan
質問者

お礼

ありがとうございます。 関数だけで乗り切ろうと思っていたのですが、マクロも使用しないとならない状況になったのでとても役立ちました。 補足の分もよろしくお願いします。

shino_chan
質問者

補足

参照したい値が入力されているセルがB列と限らない場合を教えていただけると嬉しいのですが・・・。

その他の回答 (3)

  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.4

#03です。補足を見るのが遅くなりすみません Sub Macro2() Dim rng As Range On Error Resume Next For Each rng In ActiveSheet.UsedRange Range(rng.Value).Value = rng.Offset(0, 1).Value Next End Sub とすれば、何とかなるかもしれません。アドレスと判定できるセルの右隣セルの値を、そのアドレスに転記します でもかなり「無理矢理」なロジックですから、はたして期待通りになりますかどうか…

shino_chan
質問者

お礼

お礼が遅くなり申し訳ありません! 複数のケースを想定して検証してみたいと思います。 ありがとうございました(^^♪

回答No.2

こんにちは。 セルA1に以下の式を入れ必要な分コピー =OFFSET(INDIRECT(B1),0,2) B列に値(セルアドレス)が入ってないとか、正しいアドレスが入ってなければ、A列には当然エラー値が入りますので、 =IF(ISERROR(OFFSET(INDIRECT(B1),0,2)),"",OFFSET(INDIRECT(B1),0,2)) としてエラー値の代わりに長さ0の文字列を表示するようにした方がベターですね。 それから、D列の値を表示したければ、2を3に変えるだけです。      

shino_chan
質問者

お礼

ありがとうございます。INDIRECT()は考えたのですがうまくいかなくて困っていました。とても勉強になりました。

  • suekun
  • ベストアンサー率25% (369/1454)
回答No.1

=VLOOKUP("A"&ROW(A1),B:C,2,0) とA1セルに入力して下方向にコピーって事ではないのかな?

shino_chan
質問者

お礼

ありがとうございます。ROW()は思いつきませんでした。 勉強になりました。

関連するQ&A

専門家に質問してみよう