• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:セルの値を参照して名前を定義する方法)

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

このQ&Aのポイント
  • A列の文字を名前にしてB列に名前を定義する方法について質問しています。
  • A列の同じデータの数を取得するために、CountIf関数を使用する方法について説明しています。
  • 名前の定義にはActiveWorkbook.Names.Addメソッドを使用することができます。

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

  • ベストアンサー
  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.2

例の様にA列の文字が連続しているならこんな感じで可能です。 ただし、サンプルですのでエラー処理等は入れていません。 なお、名前定義に予約語は使えませんので「C」はNGです。エラーになります。 Sub Sample()   nRow1 = 1   nRow2 = 1   Do While Cells(nRow2, 1) <> ""     If Cells(nRow2, 1) <> Cells(nRow2 + 1, 1) Then       ActiveWorkbook.Names.Add Name:=Cells(nRow2, 1).Value, RefersToR1C1:="=R" & nRow1 & "C2:R" & nRow2 & "C2"       nRow1 = nRow2 + 1     End If     nRow2 = nRow2 + 1   Loop End Sub

intyiyasaka
質問者

お礼

mt2008さん 早速の回答、ありがとうございました。 まさかこんなに早く回答がつくなんて、思ってもいませんでした。 しかも実装してみたところ、完璧でした。参照範囲もばっちりです。 こんなにシンプルできれいな構文でやりたいことが出来てしまうなんて、 思いもよりませんでした。私の考え方だったら、複雑で長い構文に なっていたと思います。 本当に本当にありがとうございました。

その他の回答 (1)

  • FEX2053
  • ベストアンサー率37% (7991/21373)
回答No.1

それ以前の話として、一つのブック上に同一の名前のセル (または範囲)は1つしか定義できませんが? ですので、B2、B3、B4セルを、同じ「b」という名前で定義 出来ないですから、発想そのものを考え直す必要があります。 逆にB2:B4を「b」という名前にするなら、「中身が同じところまで 範囲を拡張する」という手順が必要になり、一筋縄じゃいかなく なります。

intyiyasaka
質問者

補足

FEX2053さん 早速の回答、ありがとうございました。 その~、参照範囲がB2:B4の方なんです。 上級者の方でも一筋縄ではいかないなんて・・・ そこをなんとか・・・

関連するQ&A

専門家に質問してみよう