Excelで動的な名前付き範囲を作成するにはどうすればよいですか?
通常は、 名前付き範囲 Excelユーザーにとって非常に便利です。列に一連の値を定義し、その列に名前を付けてから、セル参照の代わりに名前でその範囲を参照できます。 ただし、ほとんどの場合、将来的に参照範囲のデータ値を拡張するには、新しいデータを追加する必要があります。 この場合、に戻る必要があります 式 > 名前管理者 範囲を再定義して、新しい値を含めます。 これを回避するために、動的な名前付き範囲を作成できます。これは、リストに新しい行または列を追加するたびにセル参照を調整する必要がないことを意味します。
テーブルを作成して、Excelで動的な名前付き範囲を作成します
VBAコードを使用してExcelで動的な名前付き範囲を作成する
テーブルを作成して、Excelで動的な名前付き範囲を作成します
Excel 2007以降のバージョンを使用している場合、動的な名前付き範囲を作成する最も簡単な方法は、名前付きExcelテーブルを作成することです。
たとえば、動的な名前付き範囲になる必要がある次のデータの範囲があるとします。
1。 まず、この範囲の範囲名を定義します。 範囲A1:A6を選択し、名前を入力します 日付 に 名前ボックス、次にプレス 入力します キー。 同じ方法で、範囲B1:B6の名前をSalepriceとして定義します。 同時に、数式を作成します = sum(セール価格) 空白のセルで、スクリーンショットを参照してください。
2。 範囲を選択してクリックします インセット > 表、スクリーンショットを参照してください:
3。 の中に テーブルの作成 プロンプトボックス、チェックボックス 私のテーブルにはヘッダーがあります (範囲にヘッダーがない場合は、チェックを外します)、をクリックします OK ボタンをクリックすると、範囲データがテーブルに変換されます。 スクリーンショットを参照してください:
4。 また、データの後に新しい値を入力すると、名前付き範囲が自動的に調整され、作成された数式も変更されます。 次のスクリーンショットを参照してください。
注意:
1.新しく入力するデータは、上記のデータに隣接している必要があります。つまり、新しいデータと既存のデータの間に空白の行または列がないことを意味します。
2.テーブルでは、既存の値の間にデータを挿入できます。
関数を使用してExcelで動的な名前付き範囲を作成する
Excel 2003以前のバージョンでは、最初の方法は使用できないため、別の方法があります。 以下 OFFSET() 関数はあなたのためにこの恩恵を与えることができますが、それはやや面倒です。 たとえば、定義した範囲名を含むデータの範囲があるとします。 A1:A6 範囲名は 日付, B1:B6 範囲名は セールスプライス、同時に、私はのための式を作成します セールスプライス。 スクリーンショットを参照してください:
次の手順で、範囲名をダイナミックレンジ名に変更できます。
1。 クリックしてください 式 > 名前管理者、スクリーンショットを参照してください:
2。 の中に 名前管理者 ダイアログボックスで、使用するアイテムを選択し、をクリックします 編集
3。 飛び出した 名前の編集 ダイアログで、この式を入力します = OFFSET(Sheet1!$ A $ 1、0、0、COUNTA($ A:$ A)、1) に を参照する テキストボックス、スクリーンショットを参照:
4。 次に、をクリックします OK、次にステップ2とステップ3を繰り返して、この式をコピーします = OFFSET(Sheet1!$ B $ 1、0、0、COUNTA($ B:$ B)、1)に を参照する のテキストボックス セールスプライス 範囲名。
5。 そして、動的な名前付き範囲が作成されました。 データの後に新しい値を入力すると、名前付き範囲が自動的に調整され、作成された数式も変更されます。 スクリーンショットを参照してください:
注: 範囲の中央に空白のセルがある場合、数式の結果は間違っています。 これは、空白以外のセルがカウントされないため、範囲が本来よりも短くなり、範囲内の最後のセルが省略されるためです。
ヒント:この式の説明:
- = OFFSET(reference、rows、cols、[height]、[width])
- = 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 forApplicationsウィンドウ.
3に設定します。 OK をクリックします。 インセット > モジュール、次のコードをに貼り付けます モジュールウィンドウ.
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に新しいデータを入力した後にグラフを自動更新するにはどうすればよいですか?
最高のオフィス生産性向上ツール
🤖 | Kutools AI アシスタント: 以下に基づいてデータ分析に革命をもたらします。 インテリジェントな実行 | コードを生成 | カスタム数式の作成 | データを分析してグラフを生成する | Kutools関数を呼び出す... |
人気の機能: 重複を検索、強調表示、または識別する | 空白行を削除する | データを失わずに列またはセルを結合する | 数式なしのラウンド ... | |
スーパールックアップ: 複数の基準の VLookup | 複数の値の VLookup | 複数のシートにわたる VLookup | ファジールックアップ .... | |
詳細ドロップダウン リスト: ドロップダウンリストを素早く作成する | 依存関係のドロップダウン リスト | 複数選択のドロップダウンリスト .... | |
列マネージャー: 特定の数の列を追加する | 列の移動 | Toggle 非表示列の表示ステータス | 範囲と列の比較 ... | |
注目の機能: グリッドフォーカス | デザインビュー | ビッグフォーミュラバー | ワークブックとシートマネージャー | リソースライブラリ (自動テキスト) | 日付ピッカー | ワークシートを組み合わせる | セルの暗号化/復号化 | リストごとにメールを送信する | スーパーフィルター | 特殊フィルター (太字/斜体/取り消し線をフィルター...) ... | |
上位 15 のツールセット: 12 テキスト ツール (テキストを追加, 文字を削除する、...) | 50+ チャート 種類 (ガントチャート、...) | 40+ 実用的 式 (誕生日に基づいて年齢を計算する、...) | 19 挿入 ツール (QRコードを挿入, パスから画像を挿入、...) | 12 変換 ツール (数字から言葉へ, 通貨の換算、...) | 7 マージ&スプリット ツール (高度な結合行, 分割セル、...) | ... もっと |
Kutools for Excel で Excel スキルを強化し、これまでにない効率を体験してください。 Kutools for Excelは、生産性を向上させ、時間を節約するための300以上の高度な機能を提供します。 最も必要な機能を入手するにはここをクリックしてください...
Officeタブは、タブ付きのインターフェイスをOfficeにもたらし、作業をはるかに簡単にします
- Word、Excel、PowerPointでタブ付きの編集と読み取りを有効にする、パブリッシャー、アクセス、Visioおよびプロジェクト。
- 新しいウィンドウではなく、同じウィンドウの新しいタブで複数のドキュメントを開いて作成します。
- 生産性を 50% 向上させ、毎日何百回もマウス クリックを減らすことができます!