• ベストアンサー

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

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

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

  • ベストアンサー
  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.4

>No2の方により、解決することができました。 解決されたのならよかったです。 ところで、 >ためしに"仕様数"という名前が存在しないSheetでRange("仕様数")を実行しましたら 仮にSheet1のA1:A5を”仕様数”と名前の定義を行なった場合、 Sheets("Sheet2").Range("仕様数")~ってやるとエラーになりますが、 その事とは違いますよね?

jojodon
質問者

補足

>Sheets("Sheet2").Range("仕様数")~ってやるとエラーになりますが、その事とは違いますよね? そのことです(と思います)。やりたいこととしては、もしSheet2に"仕様数"がなければ、エラーで停止してしまうのではなく、気にせず何もしないようにできればと考えています。 その背景として、現在、Excelの仕様書が複数存在するのですが、仕様書のSheetごと"仕様数"の定義がある場合とない場合があり、さらに"仕様数"のあるSheetは1つの仕様書ファイルに複数存在しています。このような状況で、各仕様書に存在する全ての"仕様数"の合計を算出できるマクロかVBAを作成したいと考えています。

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

その他の回答 (4)

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.5

ANo.1での回答の方法だと、登録されている名前の定義名とその範囲が イミディエイトウインドウに表示されるはずですが。。。 別々のシートで同じ名前を使う http://www2.odn.ne.jp/excel/waza/name.html#SEC8 この事だったのでしょうか? 単純にBook内の”仕様書”と名前の定義を設定した範囲の合計なら、 Sub try2() Dim st As Excel.Name Dim g_kei As Double For Each st In Application.Names g_kei = g_kei + WorksheetFunction.Sum(Range(Replace(st, "=", ""))) Next MsgBox g_kei End Sub こうゆう事ですか?

jojodon
質問者

お礼

お礼が遅くなりまして、申し訳ありませんでした。 仕様書と名前の定義を設定した範囲を、出すことができるんですね。ひとまず、VBAを駆使してチャレンジしてみます。 大変参考になりました。ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。
  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.3

ANo.2さんの回答により、なんか私は勘違いしてたようですね。 >自動集計 が例えば”合計”を出すのであれば、一般関数の  =SUM(仕様数) とかって事だったのでしょうか?

jojodon
質問者

お礼

質問の仕方があいまいでもうしわけありませんでした。No2の方により、解決することができました。ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。
  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.2

>C言語はひととおりできる 関係ないです。エクセルVBAはエクセルの操作レベルの熟練とメソッドプロパティをどれだけ知っているかであって、言語仕様の知識やプログラムロジックの経験とも関係ない。 VBの熟達者であっても、エクセルVBAの0前では、勉強してなければ 手も足も出ないはず。VBAのAはエクセルの操作をスクリプト化してあるイメージで、VBAの1行でエクセルに即して、中身が詰まっている物が多い。 常識的なロジックで総なめに聞いたりすると複雑だが、エクセルVBAのことを知っていると、短い1行で済むものも多い。 ーー 本件は Sub test01() Range("範囲1").Select MsgBox Selection.Cells(1) End Sub を参考に。 本例ではC2:D3に範囲1と名前をつけています。 Ceセルの値を取り出した例です。D2ならMsgBox Selection.Cells(2) です。 1セルごとに名前をつけているなら Sub test02() MsgBox Range("セル1") End Sub で一発です。 セルを表現する仕方の1つにこれが入ってますが、良く気に留めないと本の記述を通りすぎます。

jojodon
質問者

お礼

例えば、Range("仕様数")で取得できるのですね。理解できました。ありがとうございます。 なお、作成している仕様書ブックのなかには、"仕様数"という名前が定義されていないSheetが含まれているのですが、このようなSheetがあるなかで、"仕様数"から値を取得するにはどうしたらよいのでしょうか? ためしに"仕様数"という名前が存在しないSheetでRange("仕様数")を実行しましたら、プロシージャエラーがでてしまいました。 続けてすみませんが、ご教授いただけますと助かります。 よろしくお願いいたします。

全文を見る
すると、全ての回答が全文表示されます。
  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.1

Sub try() Dim st As Excel.Name For Each st In Application.Names Debug.Print st.Name, st Next End Sub こんな感じの事ですか?

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

関連するQ&A

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

  • VBからEXCELのセルの値を取得する方法

    VBからEXCELファイルのあるセルの値を取得すると、本来の書式設定とは 違った形式で取得されてしまいます。 VBから値を取得する方法を教えて下さい。 *EXCELファイルのセルの設定  セルの書式設定-ユ-ザ-定義-[h]:mm   (時刻ではなく、時間として設定しています) これをVBから普通に取得すると「1.7523548785」などといった 数値になってしまいます。

  • excel2003の vbaの名前定義について

    excel2003の vbaで、名前定義した範囲から、任意のセルの値を抜き出したいです。 例えば、Aという名前定義した範囲があるとします。 AはA1セル~A10セルの範囲です。 そして、たとえいばA3セルの値を取得したい場合。 名前定義した範囲を使ってどのように表現すればよいでしょうか?

  • VBA 名前定義の参照について

    設定している名前定義を参照したいと思っています。 名称:タイプ 値 A1:サンプル1 A2:サンプル2 A3:サンプル3 A4:サンプル4 A5:サンプル5 と、設定されている場合に、これをVBAから (1) 「タイプ」という名前定義にいくつの値が設定されているのか (2) 「タイプ」という名前定義で設定されている個々の値 を取得したいと思っていますが、 調べてみても「定義されている名前の値」や 「定義されている名前の個数」の取得や削除の方法ばかりで 良く分かりませんでした・・・ ちなみに .Names("タイプ").Value で、設定セルの範囲は取得できます。 そこから、セルの値を直接見ることによって参照するものなのでしょうか?

  • エクセルにおけるセルへの名前のつけ方につきまして

    同一ブックの別シートで、それぞれのシートのセルに同じ名前をつけることはできないのでしょうか?マクロなどを使用せずにエクセル表左上の「名前ボックス」で定義したいのですが。

  • エクセルの名前について教えてください。

    エクセルのセル範囲の名前について質問です。 エクセルのシートでセルの範囲を選択して、左上の名前ボックスに直接名前を入力すると名前が定義できます。しかし、別のセル範囲を選択して、同じ(既に定義されている)名前を定義しようとすると、定義済みの範囲にアクティブセルが飛ばされます。異なるシートで同じ名前をつけようとしても同じ結果になります。名前がついたセル範囲を移動させようと、カットペをすると移動します。もしくは、挿入-名前-定義で名前を削除してから名前ボックスで定義する必要があります。ここで、質問です。しかし、名前が定義されたシートをタブ(一番下のシートの名前が書かれていて選択する部分)を右クリックしてシートのコピーをすると同じ名前がついた異なるセルが出来てしまいます。 色々試してみると、前に、imogasi様にご指導頂いた。名前は、ブックレベルとシートレベルとであるとの内容にからんだことだと思いました。(以下にその時の転記) >名前定義はブック単位とシート単位の2つがあります。上記の2つが >その例です。 シート上でも、=Book1!名前1や='Sheet1'!名前1って出てきました。 考え方として次のような考え方で宜しいのでしょうか? 名前ボックスでは、ブックレベルでの名前定義になる。 シートレベルでの定義は、エクセルのシートからは出来ない? bookレベルを指す時は、Book1!と''でくくらない Sheetレベルを指す時は、'Sheet1'!とシート名の部分を''でくくる 同じセル範囲を、同じ名前であっても、シートレベルとブックレベルで重複定義できる? vbaで使用する時は、同じく、'Sheet1'でくくる どなたか?詳しいかた教えて頂けないでしょうか?宜しくお願いします。

  • Excel VBA で色付きのセルの値を取得する

    ExcelのVBAマクロで、For ~ Then構文で複数のセルを参照していき、 色付きのセル(塗りなしのセル)に入力されている値のみを取得する方法を教えてください。 Excel2007を使用しています。

  • Excelセルの名前がどこにあるか分からない

    Excel2000を使用しセルに名前をつけ計算や集計を行っていたのですが 過去に作ったシートのためどこかに”a”や”aa”などの名前が残っているらしく、シートコピー時に”a”が重複している警告がでます。 シート上のどこになんと言う名前がつけられているか調べる方法を 教えてください。 また、セルの名前を消す方法はセル削除以外であるでしょうか よろしくお願いいたします。

  • エクセルのVBAを使って、セルの値の検索をしたいと思ってます。

    エクセルのVBAを使って、セルの値の検索をしたいと思ってます。 ですが、cells.findのように、アクティブセルが移動することなしに、値のみを取得し、変数に格納したいと思っていますが、どうすればよいか、見当がつきません。 繰り返し構文を使えば、検索はできますが、それだと、無駄に重くなりそうなので、何か良い方法はありませんか?

  • EXCEL97のSUM関数で指定できるセル数

    こんにちは。 タイトル通りなのですが、ヘルプを見ると30個までと書いてありました。 連続したセルなら指定可能なようなんですが、集計したいセルは1つ置きで、最大個数が今のところ100を越えています。 この場合、 1.30個ずつ小計する関数を入れた非表示のセルを作り、それを合計する。 2.VBAで計算し値だけを集計のセルに入力する。 どちらの方が良いのでしょうか? ちなみに2はまだ試した事が無いので、やり方等はこれからなのですが、2だと各々の値が入ったセルが更新されても、もう一度マクロを実行しないと再集計されないですよね。 けれど、作った表を客先にデータとして納品するときは、1だと渡してしまった後に向こうで変更してもらうときややこしかったりしないでしょうか。 上手く説明できませんでしたが、よろしくお願いします。