• ベストアンサー

エクセルVBAで質問です。データのセル範囲に名前を順に付けていくには

データベース形式の表にB列にデータがあれば C列~E列の範囲を、B列の会社名を名前にして定義していきたいので すが、教えていただけないでしょうか? リストで使ったり、グラフにする範囲に利用する等、範囲を名前に しておきたいのです。よろしくお願いします。 A列=No. B列=会社名 C列=データ1 D列=データ2 E列=データ3 F列=メモ

  • wait4u
  • お礼率45% (619/1365)

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

  • ベストアンサー
  • keirika
  • ベストアンサー率42% (279/658)
回答No.1

シート名をSheet1とします。 Sub Sample() Dim rng_Data As Range Dim i As Long Sheets("Sheet1").Range("C1:E1").Select Set rng_Data = Range(Selection, Selection.End(xlDown)) For i = 1 To rng_Data.Rows.Count ActiveWorkbook.Names.Add _ Name:=Sheets("Sheet1").Cells(i, 2), _ RefersTo:=rng_Data.Rows(i) Next Set rng_Data = Nothing End Sub

wait4u
質問者

お礼

ありがとうございました。大変助かりました。

その他の回答 (5)

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

こんなのマクロの記録で判ることじゃないの。 例データ A2:F7 番号 会社名 データ1 データ2 データ3 メモ 1 東商事 12 23 45 2 今井建設 13 25 48 3 岡野洋行 14 27 51 4 東京企画 15 29 54 5 カンダ株式」 16 31 57 6 北野販売 17 33 60 B2:F7を範囲指定して、挿入ー名前ー作成ー左端列 Sub Macro1() Range("B2:E7").CreateNames Left:=True End Sub すこし、余分なコードをそぎ落としたが。 これで質問者のニーズに合うのか、合わない場合補足してください。 ーー 本来、上記のような実例を挙げて、多分、名前ボックスで東商事を選択したら、どうなってほしいとか、質問すべきだ。 その先の応用例が書いてないので、上記でよいかどうか判らない。 Sub test01() x = Cells(2, "B") MsgBox x Range(x).Select Selection = "" End Sub のような使い方は出来るなと思ったが、どういう使い方をするのかな。 >リストで使ったり、グラフにする範囲に利用する等、 前者はわかるが後者は、VBAでの話し?

wait4u
質問者

お礼

回答はありがたいのですが、投稿者の気持ちを悪くするような表現が多いように感じます。立場が変わり、私自身得意なことであれば、初心者に同じような感情を抱くこともありますが、そのような言葉遣いはしません。自分自身このように初心者の場合、玄人の考えるところまで考えが及ばないことがあることを分かっているからです。 以後は回答してくださらなくて結構ですのでご承知おきください。

noname#79209
noname#79209
回答No.5

#3です。 B列からE列を選択して、#3と同様に、 「左端列」にチェックを入れればVBAでなくても可能です。 ご参考まで。

wait4u
質問者

お礼

ありがとうございました。一般操作でのやり方はいつも使っていのですが、今回他のマクロと組み合わせたいと考えて投稿させていただきました。またお願いします。

noname#79209
noname#79209
回答No.4

#3です。 早トチリでした。 忘れてください。

noname#79209
noname#79209
回答No.3

1.各列の1行目に、それぞれの列の名前を入力しておきます。 2.A列からF\列までを全て選択します。 3.「挿入」-「名前」-「作成」をクリック。 4.「上端行」にcえっくを入れる。 5.「OK」をクリック。

  • end-u
  • ベストアンサー率79% (496/625)
回答No.2

こんにちは。 Sub try()   Dim r As Range      With ActiveSheet     For Each r In .Range("B1", .Cells(.Rows.Count, 2).End(xlUp))       If r.Value <> "" Then         r.Offset(, 1).Resize(, 3).Name = r.Value       End If     Next   End With End Sub ...こんな感じです。

wait4u
質問者

お礼

ありがとうございました。分かりやすくてお手本になりました。#1さんとは甲乙付けがたいのですが、その場合最初の方に、と自分の中で決めていますので今回は次点ということでご容赦願います。またお願いしますね。

関連するQ&A

  • セル範囲に名前を定義する

    セル範囲に名前を定義して、計算式の中で使いたいのですが、 例えば、A列全体にAという名前、B列全体にBという名前を付けて、 =Counta(A)と記述すれば、A列にあるデータの個数が出てきます。 =Counta(B)と記述すれば、B列にあるデータの個数が出てきます。 一つの計算式にCounta関数が10個以上あって、AとBを書き換えるのが面倒なのですが、 特定のセルC1にAと入力したらCounta(A)、Bと入力したらCounta(B)になるようには出来ないでしょうか? =Count(C1)と入力してもダメでした。

  • エクセル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」と入力したりと変化します。その度に名前の定義を変更したいです。(イベントでなく普通にボタンを押して変更する) 名前が変わるので、同じ範囲で名前が違うものがいくつもできないようにしたいです。 すいません、色々条件ありますがどうぞよろしくお願いいたします。

  • INDIRECTと名前の定義セル参照拡張範囲

    只今エクセル勉強中です。よろしくお願いします。 画像の貼り付けがよくわからなかったので シート画面のコピーを添付データにしています。 A列に分類(データA4:A5) B・C列に商品というデータがあるとします。 名前の定義 範囲から作成でA3:C5を上端行基準で 分類・パソコン・プリンタと名前をつけます。 E2セルにデータの入力規制で =分類 とします。 E2の入力値に対してF2の入力範囲を切替えたいと思います。 そこでF2の入力規則で =INDIRECT(E2) とします。 ここまではOKなのですが、分類・パソコン・プリンタの種類が増える事を 想定し名前範囲を拡張したいと思います。 そこで名前の定義で 分類の範囲を =OFFSET(Sheet1!$A$4,0,0,COUNTA(Sheet1!$A:$A)-1,1) に変更 パソコンの範囲を =OFFSET(Sheet1!$B$4,0,0,COUNTA(Sheet1!$B:$B)-1,1) プリンタ範囲も同様に変更しました。 そして6行目以降に項目を追加すると E2セルではプルダウンに追加したものが反映されます。 しかしF2ではプルダウン項目がなくなりました。 何が間違っているのでしょうか? Excel2007使用です。 よろしくお願いします。

  • エクセルのグラフでデータ範囲を指定したいのですが?

    例えば、A列1行~E列10行までの範囲でC列だけのぞいて一つのグラフにしたいのですが、データの範囲の仕方がわかりません。どなたか教えて下いよろしくお願いします。

  • エクセル 名前定義の範囲について

    エクセル 名前定義の範囲について質問です。 始まり・終わりの行を示す特定の文字列を設定し、 それを元に自動で範囲の行数を変化させるようなことはできませんでしょうか。 例)A列に、行範囲を示す文字列を記述。  B列以降が実際の範囲となる。  A 1 この行から 2  3  4  5  6 この行まで 7 というように記述されていた場合、 「この行から」「この行まで」という文字列の位置を元に、 名前定義の範囲が自動で「B1:C6」となるような方法を探しています。 「この行から」の位置をA3に変更した場合、 名前定義された範囲も、自動で「B3:C6」に変化して欲しいのです。 ただし、文字列を元に変化するのは行だけで、列の範囲は固定で構いません。 極力マクロを使用しない方法で、有効なものがございましたら ご指導のほどよろしくお願いします。

  • EXCELマクロのデータ範囲の取得の記述を教えてください

    ちょっと説明しづらいのですが、 現状、セルA3~G33の範囲でデータがあります。 このデータの範囲は流動的です。 3行目のデータは、項目です。 NO.0からはじまって、場合によってNo.4までだったり No.10であったり不規則です。 A列は項目です。セルA4より丸1からはじまって、 丸15まで据付けておきます。 データは、セルB4から入力していきます。 3行目の項目は流動的ですが、A列(A4からはじまる)の 項目は固定です。 この条件の中で、グラフをマクロでつくりたいのですが 例えばデータがB4~E13にある場合のデータの範囲の取得 、データがB4~G15にある場合のデータの範囲の取得など、 固定項目を含んだときの、データの範囲の取得の記述方法 がわかりません。 教えていただきたいと思います。

  • エクセルのセルの長さが可変のデータに、それぞれ一番上のデータの名前を定

    エクセルのセルの長さが可変のデータに、それぞれ一番上のデータの名前を定義するにはどうしたらいいんでしょうか? 先日ここの質問で解決し ↓こういうデータを作成することができました。    A列   B列   C列   D列    1 MM銀行 NN銀行 LL銀行 OO銀行 2 PP支店 SS支店 UU支店 VV支店 3 QQ支店 TT支店        WW本店 4 RR支店              XX支店 5                    YY支店 このデータを使用して入力規則のリストを使用したいので、名前の定義を使用し、 「A1」から「D5」を範囲選択し、まとめて「上端」を名前として設定する処理を行いました。 そうするとA列とB列とC列の何も入っていないところにも名前が設定されていると思うんですが、 リストを設定したところの選択肢にスペースのセルもすべて表示されてしまいます。 1列1列名前を付けていけばいいのですが、何十列もあるため処理に時間がかかってしまいます。 それぞれの銀行の支店の数も違いますし、銀行数自体増える可能性があるので それぞれの列の行数も増減しますし、列のデータも増減します。 ひとつの列の最後の行を見に行くマクロはわかるのですが、 列の最後も同時に見に行くとなると、考えてみてもわかりませんでした。 マクロは人が書いたものを、調べていって理解できる程度です。 今までもこのサイトの過去のものを見て勉強させていただきました。 今回もインターネットで調べまわったのですが、よくわかりませんでした。 よければ、どうしたらいいのか教えていただきたいと思っています。 よろしくお願いします。

  • エクセルVBAで、複数セルのデータをひとつのセルに改行してまとめたいのですか・・・

    データの内容をひとつのセルに改行して入れていくという 作業を自動化できないでしょうか? 「データ」シート メモ 地点 from ~ to 線種 A1,B1,C1,D1,E1,F1に上の項目があり、 メモ、地点には文字、from ~ toには時刻(00:00)が入り、線種には =====というような記号が入ります。("~"の列には00:00形式の時刻が入る他"~"という記号が入るときもあります) それぞれの項目の下にデータを入力してあります。 これを「まとめ」シートに ・A~E列までをひとつのセルに改行してまとめる ・F列はその右隣にそのまま表記する と自動でできないかと考えています。例えば、「データ」2行目に A2 観劇 B2 日本大劇場 C2 10:00 D2 ~ E2 12:00 F2 ====== とある場合、「まとめ」シート A2セルは 観劇 日本大劇場 10:00~12:00 と改行して入り、B2に「データ」F2の======が入るように「データ」シートのデータがなくなるまで右にずらっとつなげていくようにしたいと思っています。今手作業でやっているのですが時間がかかって・・・。 よろしくお願いします。

  • エクセル、セル範囲の名前をつけるとき

    エクセル2010です。 セル範囲に名前をつけて関数などに使っています。その中で、範囲をテーブルの列で指定しているものがいくつかあり、たとえばテーブル1の「支出」という列なら、 =テーブル1[支出] とテーブルや列の名前(見出し行の該当列の文字列が自動的に[ ]に入る)で指定できるのですが、あるテーブルは、なぜかこういう指定ができず、 =1月収支!$C$2:$C$100 というふうに、シート名とセル番号での指定しかできません。 手動で=テーブル名[見出し名]の指定をしようとしても、「入力した数式は正しくありません」とエラーが出てしまいます。 両者のテーブルは、同じような内容と項目で同じように作ったのですが、このようになる原因はどういうことが考えられるでしょうか? 実用上はとくに問題なく計算できているので、差し迫って困っているわけではないのですが、どうにも腑に落ちないので、いちおう原因をつきとめておきたいです。 チェックすべき部分など、アドバイスいただけるとありがたいです。よろしくお願いします。

  • EXCELでグラフのデータ範囲を自動化したい

    EXCELについて質問があります。 いまあるデータをグラフ化しようと思っているのですが、グラフのデータ範囲を自動で指定したいのです。 詳しく話しますと、A列に日付データ、B~Fに数値データが入っています。 なお、B~F列には他のシート(同一ファイル)のデータからVLOOKUPによって日付を検索値にて抜き出した数字が入っております。 そして、グラフ化するデータ範囲は一番古い日付から前日までのB~Fのデータになります。また、A列を項目軸ラベルとして使用します。自動化するのはこの、「前日まで」という部分です。 ちなみにA列には、2003年から2008年までの日付が予め入っています。 ですので、B~F列にはVLOOKUPで検索している関係で現在の日付以降の欄には最後に入力された日付のデータが下にずらずらと表示されています。 現在は手動でグラフの範囲の更新をしている為、未来の日付にデータが入っていることには支障はありません。もし、自動化するにあたって他の方法を用いてデータを抜き出した方がよいのであればその点も明記していただけますと助かります。 よろしくお願い致します。 ※データ詳細 ・4行目からデータが入っています。 ・A列には2003年3月31日から1日ずつ日付が入っています。 ・B~F列には数値データが入っており、B列はsheet2に元データがありA列に日付、E列に抜き出すデータが入っています。C列以降もsheet3,4…と元データが入っており、A列に日付がありますが、抜き出すデータはシートごとに列が違います。 ・元データの日付の開始日はシートによって異なります。(全て03/03/31からあるわけではないという意味です。) ・グラフ形式は積み上げ面です。B~Fの合計値の推移を見る為です。

専門家に質問してみよう