Excel で動的名前付き範囲を作成するにはどうすればよいですか?
通常、名前付き範囲はExcel ユーザーにとって非常に便利です。列内の値の系列を定義し、その列に名前を付けることで、セル参照の代わりにその名前で範囲を参照できます。しかし、将来的に新しいデータを追加して参照範囲を拡張する必要が生じることも少なくありません。そのような場合は、数式>名前の管理に戻って、範囲を再定義し、新しい値を含める必要があります。これを回避するには、新しい行や列をリストに追加するたびにセル参照を手動で調整する必要のない、動的名前付き範囲の作成をおすすめします。
VBA コードを使用してExcel で動的名前付き範囲を作成する
テーブルを作成してExcel で動的名前付き範囲を作成する
Excel 2007 以降のバージョンを使用している場合、動的名前付き範囲を作成する最も簡単な方法は、名前付きExcel テーブルを作成することです。
たとえば、以下のデータ範囲があり、これを動的名前付き範囲にする必要があるとします。

1。まず、この範囲にセルの名前を定義します。範囲 A1:A6 を選択し、Dateを名前ボックスに入力してEnterキーを押します。同様に、範囲 B1:B6 には「Saleprice」という名前を定義し、空白セルに数式 =sum(Saleprice)を入力してください(スクリーンショットを参照)!

2。範囲を選択して、挿入>テーブルをクリックしてください(スクリーンショット参照)。

3。テーブルの作成ダイアログボックスで、テーブルに見出しがあるにチェックを入れてください(範囲に見出しが含まれていない場合は、チェックを外してください)。OKボタンをクリックすると、指定した範囲のデータがテーブルに変換されます(スクリーンショットを参照)!
![]() | ![]() |
4。データの後に新しい値を入力すると、名前付き範囲が自動的に調整され、それに伴って作成済みの数式も自動で更新されます(以下のスクリーンショットをご参照ください)。
![]() | ![]() |
注:
1。新しく入力するデータは、上記のデータに隣接している必要があります。つまり、新しいデータと既存のデータの間に空白の行や列を挟んではいけません。
2。テーブル内では、既存の値の間にデータを挿入できます。
関数を使用してExcel で動的名前付き範囲を作成する
Excel 2003 以前のバージョンでは、最初の方法は使用できません。そのため、別の方法をご紹介します。OFFSET( )関数を使えばこの操作を実現できますが、やや煩雑です。たとえば、セル範囲に名前が定義されており、A1:A6がDate、B1:B6がSalepriceという名前になっていると仮定します。このとき、Saleprice 用の数式を作成します(スクリーンショットを参照)。

次の手順でセルの名前を動的セルの名前に変更できます。
1。数式>名前の管理をクリックします(スクリーンショット参照)。

2。名前の管理ダイアログボックスで、使用する項目を選択して、編集ボタンをクリックします。

3。表示された名前の編集ダイアログで、参照範囲テキストボックスに=OFFSET(Sheet1!$A$1, 0, 0, COUNTA($A:$A), 1)を入力します(スクリーンショットを参照)。

4。次に、OKをクリックし、ステップ2 とステップ3 を繰り返して、参照範囲テキストボックスにセル名 Saleprice 用の数式 =OFFSET(Sheet1!$B$1, 0, 0, COUNTA($B:$B)、1)を入力します。
5。これで動的名前付き範囲が完成しました!データの末尾に新しい値を入力すると、名前付き範囲が自動的に拡張され、それに応じて作成済みの数式も自動更新されます(スクリーンショット参照)。
![]() | ![]() |
注:範囲内に空白セルが含まれていると、数式の結果が誤ったものになります。これは、空白でないセルのみがカウントされるため、範囲が本来あるべき長さよりも短くなり、末尾のセルが除外されてしまうからです。
ヒント:この数式の説明:
- =OFFSET(参照,行数,列数、[高さ]、[幅])

- =OFFSET(Sheet1!$A$1, 0, 0, COUNTA($A:$A), 1)
- 参照は開始セルの位置を示します。この例では、Sheet1!$A$1です。
- 行は、開始セルから下方向に移動する行数を示します(負の値を指定すると上方向に移動します)。この例では、0 を指定することで、リストが最初の行から下方向に開始されることを示しています。
- 列は、開始セルから右方向に移動する列数を指定します(負の値を指定すると左方向に移動します)。上記の数式例では、0 を指定することで、右方向に 0 列拡張することを示しています。
- [高さ]は、調整後の位置から下方向に数えた範囲の高さ(行数)を示します。$A:$A の場合は、A 列に入力されたすべての項目がカウントされます。
- [幅]は、調整後の位置から始まる範囲の幅(列数)を示します。上記の数式では、リストの幅は1 列です。
これらの引数は必要に応じてカスタマイズ可能です。
VBA コードを使用してExcel で動的名前付き範囲を作成する
複数の列がある場合、残りのすべての列に対して個別の数式を繰り返し入力することも可能ですが、長くて繰り返しの多い作業になります。作業を簡単にするために、動的名前付き範囲を自動的に作成するコードを使用できます。
1。ワークシートをアクティブにしてください。
2。ALT + F11キーを押すと、Microsoft Visual Basic for Applications ウィンドウが開きます。
3。挿入 > 標準モジュールをクリックし、次のコードをモジュールウィンドウに貼り付けてください。
VBA コード:動的名前付き範囲の作成
Sub CreateNamesxx()
'Update 20131128
Dim wb As Workbook, ws As Worksheet
Dim lrow As Long, lcol As Long, i As Long
Dim myName As String, Start As String
Const Rowno = 1
Const Colno = 1
Const Offset = 1
On Error Resume Next
Set wb = ActiveWorkbook
Set ws = ActiveSheet
lcol = ws.Cells(Rowno, 1).End(xlToRight).Column
lrow = ws.Cells(Rows.Count, Colno).End(xlUp).Row
Start = Cells(Rowno, Colno).Address
wb.Names.Add Name:="lcol", RefersTo:="=COUNTA($" & Rowno & ":$" & Rowno & ")"
wb.Names.Add Name:="lrow", RefersToR1C1:="=COUNTA(C" & Colno & ")"
wb.Names.Add Name:="myData", RefersTo:="=" & Start & ":INDEX($1:$65536," & "lrow," & "Lcol)"
For i = Colno To lcol
myName = Replace(Cells(Rowno, i).Value, " ", "_")
If myName <> "" Then
wb.Names.Add Name:=myName, RefersToR1C1:="=R" & Rowno + Offset & "C" & i & ":INDEX(C" & i & ",lrow)"
End If
Next
End Sub
4。次にF5キーを押してコードを実行すると、最初の行の値に基づいていくつかの動的名前付き範囲が自動生成され、さらに全データをカバーするMyDataという動的範囲も作成されます。
5。行または列の後に新しい値を入力すると、範囲が自動的に拡張されます(スクリーンショットを参照)。
![]() |
![]() |
注:
1。このコードを使用すると、セルの名前は名前ボックスに表示されません。Kutools for Excelをインストールすれば、セルの名前を簡単に表示・使用可能に!そのナビゲーション機能で、作成した動的セルの名前が一覧表示されます。
2。このコードを使えば、データの全範囲を縦方向または横方向に簡単に拡張できます。ただし、新しい値を入力する際は、データの間に空白の行や列が含まれていないようにご注意ください。
3。このコードをご利用になる際は、データ範囲がセル A1 から始まっている必要があります。
関連記事:
Excel で新しいデータを入力した後にグラフを自動更新する方法は?
最高の Office 業務効率化ツール
| 🤖 | KUTOOLS AI アシスタント:次に基づいてデータ分析を革新します:インテリジェント実行 | コード生成| カスタム数式作成 | データ分析とチャート生成| 拡張機能呼び出し… |
| 人気の機能:検索・ハイライト、または重複をマーキング | 空白行を削除する | データを失うことなく列の結合またはセルを | 数式を使用しない四捨五入... | |
| スーパー LOOKUP:複数条件 VLookup | 複数値 VLookup | 複数シート間 VLookup | ファジーマッチ.... | |
| 高度なドロップダウンリスト:ドロップダウンリストをすばやく作成 | 連動型ドロップダウンリスト | 複数選択可能なドロップダウンリスト.... | |
| 列マネージャー:指定した数の列を追加|列の移動|非表示列の表示状態を切り替え|範囲および列の比較... | |
| 注目の機能:グリッドフォーカス | デザインビュー |強化された数式バー | ワークブックとシートマネージャー | リソースライブラリ(オートテキスト)| 日付ピッカー | ワークシートの統合 | 暗号化/セルの復号化 | リストからメール送信 | スーパーフィルター | 特殊フィルタ(太字のフォントを持つセルをフィルタリング/斜体/取り消し線。。。) 。。。 | |
| トップ15 ツールセット:12 テキストツール(テキストの追加、特定の文字を削除、...)| 50+チャートタイプ(ガントチャート、...)| 40+実用的関数(誕生日に基づいて年齢を計算します、...)| 19 挿入ツール(QR コードを挿入、パスから画像を挿入、...)| 12 変換ツール(単語に変換する、為替レートの変換、...)| 7 結合と分割ツール(高度な行のマージ、セルの分割、...)|さらに多数 |
Kutools for Excel でExcel スキルを強化し、これまでにない効率を体験しましょう。Kutools for Excel は、生産性を高め、時間を大幅に節約できる高度な機能を300 以上提供します。最も必要な機能を今すぐ入手するにはこちらをクリック。。。
Office Tab は Office にタブインターフェースをもたらし、作業を大幅に簡単にします
- Word、Excel、PowerPoint でタブを使った編集と閲覧を有効にします。Publisher、Access、Visio、Project でもご利用いただけます。
- 複数のドキュメントを、新しいウィンドウではなく、同じウィンドウ内の新しいタブで開いたり作成したりできます。
- 日々の生産性を50%も向上させ、毎日数百回ものマウスクリックを削減します!
すべてのKutools アドインが、たった1 つのインストーラーで完結。
Kutools for Officeスイートには、Excel ・Word ・Outlook ・PowerPoint 用のアドインと Office Tab Pro が含まれており、複数の Office アプリを横断して作業するチームに最適です。
- オールインワンスイート— Excel、Word、Outlook、PowerPoint 用アドイン+Office Tab Pro
- インストーラー1 つ、ライセンス1 つ— 数分でセットアップ可能(MSI 対応)
- 連携してさらにパワーアップ— Office アプリ全体で生産性が向上
- 30 日間のフル機能トライアル— 登録不要、クレジットカード不要
- 最高のお得感— 個別アドイン購入よりお得





