• ベストアンサー

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

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

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

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

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

presidiofo
質問者

補足

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

その他の回答 (2)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答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

  • 分子量を求めるマクロ

    はじめまして。Visual Basic を大学で始めたばかりですごく難しいです。 わからないマクロがあるので教えていただけないでしょうか? 「分子式をセルに入力しておき、その分子量を計算し出力するマクロ」 ただし、計算に用いる原子量については、H列に元素記号、I列に原子量が順次降順に 並べられているものとする。分子量が0の分子式を読み込んだときにマクロが終了する ものとし、計算した分子量はF列に出力するものとする。このとき全部の元素について 計算できなくても良いものとし・・・・の計X種類の元素について計算できるようにする。 よろしくお願いします。

  • 隣のセルで書式を変える VBA

    通常の書式でのやり方ではわかりませんでした。マクロでなければできませんでしょうか? A列に値が入っていて、B列に値が入っていない場合にセル色とフォントを変更したいのです。 例えば、以下の感じです。 ・A6には値が入っていて、B6には入っていない場合にB6がセル色が赤でフォントが白 ・A7には値が入っていないくて、B7には入っていない場合は変化なし ※同じシートには他に、private sub でダブルクリックすると変化させるマクロが入っています。

  • VBA 今日の行にあるセル コピー 別シートへ

    (1)sheet1にボタン button1 があり、そのボタンを押すと、マクロが起動する。 (2)データは sheet2 貼り付け先は sheet3 sheet2 F列に日付が入っています。   F列は、日付(過去~本日まで ※未来の日付はありません)か、空白の場合があります。 F列の日付が本日のとき、 sheet2 A列のセルの値を sheet3 B列へ。  A列には連番。 sheet2 D列のセルの値を sheet3 C列へ。 sheet2 G列のセルの値を sheet3 D列へ。 sheet2 F列のセルの値を sheet3 E列へ。 それぞれ、Sheet3の各行の一番下に貼り付ける形をとりたいのです。 こちらでマクロはどうしたらよいのでしょうか。

  • セルの値を参照して名前を定義する方法

    A列  B列 a    ああああ b   いいいい b   うううう b   ええええ c   おおおお c   かかかか d   きききき d   くくくく d   けけけけ d   ここここ d   ささささ このような配列でデータが存在します。 A列の文字を名前にしてB列に名前を定義しようとしています。 例えばああああという文字列にaという名前を定義したいのです。 いいいい、うううう、ええええにはbという名前を定義したいのです。 A列の同じデータの数が決まっていないので Dim cnt As Long 'A列の同じ値の数 Dim tName As String 'A列の値 cnt = WorksheetFunction.CountIf(ActiveSheet.Range("A1:B500"), tName) という関数を探してきたので、これでA列の同じ値のセルの数を取得しようと思います。 名前の定義はマクロを記録したところ・・・ ActiveWorkbook.Names.Add Name:="a", RefersToR1C1:="=Sheet1!R2C2:R2C2" を得ました。 この後どのようにしてプログラムを組み立てたらいいでしょうか。 よろしくお願いします。

  • Excel セルの名前を検索できますか?

    セルに名前を定義しています。そのセルに書かれた値を取得したいです。その方法として、セルの名前を検索することでセルを特定し、値を取得するマクロを作成したら、できるのでは?と考えたのですが、ヘルプやWebを調べてもこのような方法はありませんでした。こういったことはできないのでしょうか? 私の知識レベルは、C言語はひととおりできる、VBの経験はなし、業務でExcelを使っており基本操作はできるレベルです。 すみませんが、アドバイス、よろしくお願いいたします。 以下やりたいことの補足 具体的には、仕様書の仕様数がかかれたセルがあり、そのセルは”仕様数”として名前を定義している。そのセルの値である仕様数をマクロやVBAなどにより自動集計して、仕様書のボリュームを読みたいと考えています。

  • となりのセルの文字を消したい

    困っているので助けてください。 A列   |  B列      | ↓こんな風にしたい PCA651 | PCA651テープツキ   | テープツキ QTC421 | エンピツQTC421シサク | エンピツシサク 上記のようなエクセルでのデータがある時、 B列の中から、A列にある文字を消したいです。 データ量が1万件もあるため、手で消していくのが大変です。 量が多いため、「置換」ができません。 セルで指定ができない?んですかね。。。 A列の文字が消えれば、スペースができても構いません。 関数で使えるのがないか、探したのですが、うまくいきません。 B列文字列 - *A列の文字*(または含む)が理想です。 何か良い案ないでしょうか? この際マクロやアクセスに挑戦してみようかとも思いますが、 それが必要であれば、具体的なヒントください。 よろしくお願いします。

  • VBAで別々の2列のセルに色付け

    WINDOWS XP EXCELL 2003です。 いつもお世話になります。 参照図で A~D と E~H に分けています。 A2 数式が  =IF(B2="","",TEXT(B2,"mm")) E2 数式が  =IF(F2="","",TEXT(F2,"mm")) それぞれには 1(月)から12(月)です。 ※ 数値のみで 月 は含まれません。                      ユーザー定義 mm/dd です。   御指導を仰ぎたいのは A列 と E列 のセルの色づけのマクロを教えていただけませんか。 色コードは後で私が追加します。

  • VBA 固定セルから可変セルへのハイパーリンク

    VBA、マクロの記述方法を教えてください ハイパーリンク元:ワークシート1のA1セル ハイパーリンク先:ワークシート2のcells(リンク先セルの行番号,リンク先セルの列番号) リンク先セルの行番号、リンク先セルの列番号はいずれもINTEGERの変数名、でハイパーリンクを張ろうとする時点(段階)でマクロによって値が定義(付与)されているもの、とします

  • エクセルVBAでセルの値を名前定義連続

    いつもお世話になってます。 エクセルVBA2013で質問です。 データ シートのC3から順次行方向にD3,E3と名前が入っています。 行方向に入る数は、下記のコードで取得できる数が上限になります。 i = Range("B4:B" & Cells(Rows.Count, "B").End(xlUp).Row).Count + 2 そのC3から順次行方向のセルの値を名VBAで名前を定義したいと思っています。 参照範囲は、C3ならC列全体、D3ならD列全体・・・としていきたいです。 各セルに入る値は変化することがあります。C3に「あいう」と入力したり「AAA」と入力したりと変化します。その度に名前の定義を変更したいです。(イベントでなく普通にボタンを押して変更する) 名前が変わるので、同じ範囲で名前が違うものがいくつもできないようにしたいです。 すいません、色々条件ありますがどうぞよろしくお願いいたします。

  • エクセル「名前の作成」機能について

    A列セルに入っている値を、F列のセルの名前に定義したいのですが どうもうまくいきません。 A列からF列のデータが入っている表を全て選択した後 「選択範囲から作成」をクリックして 左端列にチェックを入れてOKボタンを押すと A列の値を行単位でセットできるのですが 参照範囲がB列からF列までの同行になってしまいます。 私がしたいのはA 列の値をF列のみの同行に定義したいのです。 これは不可能なのでしょうか? もし可能であれば方法をご教示ください。 ちなみにエクセルバージョンは2010です。

専門家に質問してみよう