エクセルの動的名前付き範囲:作成と使用する方法

  • これを共有
Michael Brown

このチュートリアルでは、Excelで動的な名前付き範囲を作成する方法と、それを数式で使用して新しいデータを自動的に計算に含める方法について学びます。

先週のチュートリアルでは、Excelで静的な名前付き範囲を定義するさまざまな方法を紹介しました。 静的な名前は常に同じセルを参照するため、新しいデータを追加したり既存のデータを削除したりするたびに、手動で範囲参照を更新しなければならないことになります。

継続的に変化するデータセットを扱う場合、名前付き範囲をダイナミックに設定し、新しく追加されたエントリーに対応するために自動的に拡張し、削除されたデータを除外するために縮小することができます。 このチュートリアルでさらに、これを行う方法についてステップバイステップの詳しいガイダンスが記載されています。

    Excelでダイナミックネームドレンジを作成する方法

    手始めに、1つの列と可変数の行からなる動的名前付き範囲を構築してみましょう。 これを行うには、以下の手順を実行します。

    1. について タブで 定義された名前 グループをクリックします。 名前の定義 または、Ctrl + F3 キーを押して、Excel Name Manger を開き、その中の 新... ボタンをクリックします。
    2. いずれにせよ 新名称 ダイアログボックスが開き、以下の内容を指定します。
      • での 名称 ボックスで、ダイナミックレンジの名前を入力します。
      • での 対象範囲 ドロップダウンで、名前のスコープを設定します。 ワークブック (デフォルト)が推奨される場合が多いようです。
      • での について言及しています。 ボックスに、OFFSET COUNTA または INDEX COUNTA のいずれかの数式を入力します。
    3. OK]をクリックし、完了です。

    次のスクリーンショットでは、レンジという名前のダイナミックを定義しています。 箇条書き にも対応できる データ付きセル を、ヘッダ行を除くA列で表示します。

    Excelの動的名前付き範囲を定義するOFFSET式

    Excelでダイナミックネームドレンジを作る一般的な計算式は以下の通りです。

    オフセット( 第一セル , 0, 0, counta( ), 1)

    どこで

    • 第一セル - 指定した範囲に含まれる最初の項目、例えば$A$2。
    • - は、$A:$Aのようなカラムの絶対参照です。

    この式の核となるのは、COUNTA関数を使って、対象となる列の中で空白でないセルの数を得ることです。 この数は、そのまま 高さ OFFSET(reference, rows, cols, [height], [width]) 関数の引数で、返すべき行の数を指定します。

    それ以上は、普通のOffsetの式で、ここで。

    • 参照 はオフセットの基点となる始点(first_cell)です。
    • 漕ぎ手 コーンズ は、オフセットする列や行がないため、両方とも0です。
    • は1カラムに相当します。

    例えば、Sheet3 の A 列のセル A2 から始まる動的名前付き範囲を構築する場合、次の数式を使用します。

    =OFFSET(Sheet3!$A$2, 0, 0, COUNTA(Sheet3!$A:$A), 1)

    注:現在のワークシートでダイナミックレンジを定義する場合、参照にシート名を含める必要はありません。 他のシートの範囲を構築する場合、セルまたは範囲の参照にシート名の前に感嘆符を付けます(上記の数式の例のように)。

    Excelで動的な名前付き範囲を作成するINDEX式

    Excelのダイナミックレンジを作成するもう一つの方法は、COUNTAとINDEX関数を組み合わせて使用することです。

    第一セル :INDEX()です。 COUNTA( ))

    この数式は2つの部分から構成されています。

    • 範囲演算子(:)の左側には、$A$2のようにハードコーディングされた開始参照を置きます。
    • 右側では、INDEX(array, row_num, [column_num]) 関数を使用して、終了時の参照を把握します。 ここでは、配列のA列全体を指定して、COUNTAで行番号(つまりA列の非入力セルの数)を取得しています。

    サンプルデータセット(上のスクリーンショットをご覧ください)の場合、計算式は以下のようになります。

    =$a$2:index($a:$a, counta($a:$a))

    A列には列ヘッダを含めて空白でないセルが5個あるので、COUNTAは5を返します。 その結果、INDEXはA列の最後に使われたセルである$A$5を返します(通常、Index式は値を返しますが、参照演算子は参照を返します)。 また、開始点を$A$2としているので、式の最終結果は範囲$A$2:$A$5になっています。

    新しく作成したダイナミックレンジをテストするために、COUNTAにアイテム数をフェッチさせることができます。

    =COUNTA(アイテム)

    すべて正しく行われた場合、リストに項目を追加したり削除したりすると、計算式の結果が変わります。

    注意:上記の2つの数式は同じ結果になりますが、性能に違いがあるので注意が必要です。 OFFSETは揮発性の関数で、シートを変更するたびに再計算されます。 最近のパワフルなマシンと適度なサイズのデータセットでは問題ありません。 低容量のマシンと大きなデータセットでは、Excelが遅くなるかもしれません。 その場合、次のような方法があります。は、INDEX 式を使用して、動的な名前付き範囲を作成する方がよいでしょう。

    Excelで2次元ダイナミックレンジを作成する方法

    行数だけでなく列数も動的な2次元名前付き範囲を構築するには、INDEX COUNTA式を次のように修正します。

    第一セル インデックス($1:$1048576, counta() 第一列 ), COUNTA( 一行目 )))

    この式では、2つのCOUNTA関数で、空でない最後の行と空でない最後の列を取得します( 行番号 列番号 の引数はそれぞれINDEX関数の引数です)。 勢揃い 引数を使用すると、ワークシート全体(Excel2016~2007では1048576行、Excel2003以下では65535行)をフィードします。

    そして、データセットにもう一つダイナミックレンジを定義してみましょう。 売上高 この表は、3ヶ月間(1月~3月)の売上高を含み、新しい項目(行)や月(列)を追加すると自動的に調整されます。

    B列2行目から始まる売上データで、計算式は次のような形になる。

    =$b$2:index($1:$1048576,counta($b:$b),counta($2:$2))

    ダイナミックレンジが想定通りに機能するように、以下の数式をシートのどこかに入力してください。

    =SUM(売上高)

    =SUM(B2:D5)です。

    下のスクリーンショットにあるように、どちらの数式も同じ合計値を返します。 この違いは、テーブルに新しいエントリを追加したときに現れます。最初の数式(ダイナミックレンジという名前の数式)は自動的に更新されますが、2番目の数式は変更のたびに手動で更新しなければなりません。 これは大きな違いでしょう?

    Excel の計算式で動的名前付き範囲を使用する方法

    このチュートリアルの前のセクションでは、ダイナミックレンジを使用するいくつかの簡単な数式をすでに見てきました。 さて、Excelのダイナミックネーム付きレンジの本当の価値を示す、より意味のあるものを考え出すことに挑戦してみましょう。

    この例では、Excel で Vlookup を実行する古典的な INDEX MATCH 数式を取り上げます。

    INDEX ( return_range , MATCH ( ルックアップバリュー , ルックアップレンジ , 0))

    ...そして、動的な名前付き範囲を使用することで、この式をさらに強力にする方法をご覧ください。

    上のスクリーンショットに示すように、ユーザーがH1にアイテム名を入力し、H2にそのアイテムの合計売上を取得するダッシュボードを構築しようとしています。 デモ用に作成したサンプルテーブルには4つのアイテムしかありませんが、実際のシートには数百、数千の行があります。 さらに、新しいアイテムが日々追加されるので、リファレンスを使用することが重要ではありません。というオプションは、何度も計算式を更新しなければならないからです。 そんなの怠慢すぎる!:)

    数式を自動的に展開させるために、3つの名前を定義します。2つのダイナミックレンジと、1つの静的な名前付きセルです。

    Lookup_range: =$A$2:INDEX($A:$A, COUNTA($A:$A))

    Return_range: =$E$2:INDEX($E:$E, COUNTA($E:$E))です。

    Lookup_value: =$H$1

    注意:Excelは現在のシートの名前をすべての参照に追加するので、名前を作成する前に、ソースデータのあるシートを開いておいてください。

    H1 に数式を入力し、最初の引数で使用したい名前を数文字入力すると、一致する名前がすべて表示されます。 該当する名前をダブルクリックすると、Excel がその名前を数式にすぐに挿入してくれます。

    完成した式は次のようになる。

    =INDEX(Return_range, MATCH(Lookup_value, Lookup_range, 0))

    そして、完璧に動作します

    テーブルに新しいレコードを追加するとすぐに、計算式に一度も変更を加えることなく、それらのレコードが計算に含まれます!また、計算式を別のExcelファイルに移植する必要がある場合は、移植先のワークブックに同じ名前を作成し、計算式をコピー&ペーストするだけで、すぐに使用できるようになります。

    ヒント:ダイナミックレンジは、数式の耐久性を高める以外に、動的なドロップダウンリストを作成する際にも便利です。

    このチュートリアルで説明した数式をより詳しく見るには、Excelのダイナミックネームドレンジワークブックのサンプルをダウンロードしてください。 読んでくださってありがとうございました。また、来週のブログでお会いしましょう

    Michael Brown は、ソフトウェア ツールを使用して複雑なプロセスを簡素化することに情熱を注ぐ熱心なテクノロジー愛好家です。テクノロジー業界で 10 年以上の経験があり、Microsoft Excel と Outlook、さらに Google Sheets と Docs のスキルを磨いてきました。 Michael のブログは、彼の知識と専門知識を他の人と共有することに特化しており、生産性と効率を向上させるためのわかりやすいヒントとチュートリアルを提供しています。経験豊富なプロフェッショナルであろうと初心者であろうと、Michael のブログでは、これらの重要なソフトウェア ツールを最大限に活用するための貴重な洞察と実践的なアドバイスを提供しています。