- ベストアンサー
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です。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
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でマクロ一覧を開き、マクロ名を選択して「実行」ボタンです。
その他の回答 (3)
- zap35
- ベストアンサー率44% (1383/3079)
#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 とすれば、何とかなるかもしれません。アドレスと判定できるセルの右隣セルの値を、そのアドレスに転記します でもかなり「無理矢理」なロジックですから、はたして期待通りになりますかどうか…
お礼
お礼が遅くなり申し訳ありません! 複数のケースを想定して検証してみたいと思います。 ありがとうございました(^^♪
- kobouzu_su
- ベストアンサー率45% (24/53)
こんにちは。 セルA1に以下の式を入れ必要な分コピー =OFFSET(INDIRECT(B1),0,2) B列に値(セルアドレス)が入ってないとか、正しいアドレスが入ってなければ、A列には当然エラー値が入りますので、 =IF(ISERROR(OFFSET(INDIRECT(B1),0,2)),"",OFFSET(INDIRECT(B1),0,2)) としてエラー値の代わりに長さ0の文字列を表示するようにした方がベターですね。 それから、D列の値を表示したければ、2を3に変えるだけです。
お礼
ありがとうございます。INDIRECT()は考えたのですがうまくいかなくて困っていました。とても勉強になりました。
- suekun
- ベストアンサー率25% (369/1454)
=VLOOKUP("A"&ROW(A1),B:C,2,0) とA1セルに入力して下方向にコピーって事ではないのかな?
お礼
ありがとうございます。ROW()は思いつきませんでした。 勉強になりました。
お礼
ありがとうございます。 関数だけで乗り切ろうと思っていたのですが、マクロも使用しないとならない状況になったのでとても役立ちました。 補足の分もよろしくお願いします。
補足
参照したい値が入力されているセルがB列と限らない場合を教えていただけると嬉しいのですが・・・。