• ベストアンサー

VBA:セルに書かれた文字を隣のセルの名前に

原子量の値のセルに名前をつけたいのです。すると例えばH2Oの分子量は_H*2+_Oとかで出すことができます。添付のようにE列に名前が入っていて,F列に原子量が入っています。F列のそれぞれのセルの名前をE列に書かれた文字列にしたいのです(例えばF3には_Heという名前をつけてあります。全ての原子についてこのようにしたいのです)。全部の原子について名前を定義するのは面倒なので,マクロでやりたいのです。マクロの記録でやってみたら,クリップボードに入っている具体的な値が記録されてしまい,うまく行きませんでした。  よろしくアドバイスをお願いします。

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

  • ベストアンサー
  • skydaddy
  • ベストアンサー率51% (388/749)
回答No.1

Range("F3").Name = Range("E3").Value これでE列の値がF列のセルの名前になります。(3行目で例示しています) 後は必要なだけFor Nextで回すとかWhile Wendで回すとかで処理すればOKです。

presidiofo
質問者

補足

私は初心者で,基礎から学ばずに見よう見まねでやっているので,いろいろ分からなくなるのですね。ご示唆,大変(大変大変)参考になります。ありがとうございました。

すると、全ての回答が全文表示されます。

その他の回答 (2)

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

初心者であるがゆえに、思いついたか、ふと見つけた、名前付けなどをいっているが、 シートに表データがあれば B列 水素 ヘリウム リチウム ・・ F列 1.00794000 4.00260200 6.94100000 ・・ (数値データの小数点以下桁数は適当に設定) ーー 標準モジュールに Sub test01() genso = "?w???E??" r = Range("B2:B100").Find(genso).Select gensiryo = Selection.Offset(0, 4) 'B列からF列は、列のOFFSETは4 MsgBox gensiryo End Sub や Sub test02() genso = InputBox("元素") r = Range("B2:B120").Find(genso).Select gensiryo = Selection.Offset(0, 4) MsgBox gensiryo End Sub を参考にして考えるとか、どうですか? ーー またはVLOOKUP関数を使う、で済むことではないのか? VBAの中でもVLOOKUP関数を使えるよ。

すると、全ての回答が全文表示されます。
  • watabe007
  • ベストアンサー率62% (476/760)
回答No.2

>F列のそれぞれのセルの名前をE列に書かれた文字列にしたいのです Sub Test()   Dim c As Range   For Each c In Range("F2", Cells(Rows.Count, "F").End(xlUp))     c.Name = c.Offset(, -1).Value   Next End Sub

presidiofo
質問者

補足

ありがとうございます。うまくいきました。今後のため,クリップボードを利用する方法がありましたら,よろしくお願いいたします。

すると、全ての回答が全文表示されます。

関連するQ&A