Excel テーブルの見出し(列名)の値を相対的に取得する方法

Excelでテーブルを使っていると、「このセルの列見出しを別の場所で自動的に表示したい」「数式で動的に参照したい」と思うことがある。
特にテーブルの列が増減したり、順番を入れ替えたりする場合には、相対的に見出しを取得する方法を知っておくと非常に便利だ。
この記事では、初心者でも理解できるように、Excelでテーブルの見出し(ヘッダー)を相対的に取得する方法を詳しく解説する。


PR

テーブルの見出しを相対的に取得するメリット・デメリット

メリット

  • 列の順番が変わっても、数式を修正する必要がない
  • データ構造が変化しても、参照が崩れにくい
  • テーブルを自動化処理(Power QueryやVBA)で扱う際に柔軟に対応できる

デメリット

  • 一般的なセル参照に比べて数式がやや複雑
  • INDEX関数やMATCH関数など、関数の理解が必要になる

PR

テーブルの見出しを相対的に取得する具体的な方法

方法1:INDIRECT関数とROW関数を組み合わせる

この計算式をコピペすれば、いつでもどこでも同じように使える。

手順

  1. 以下のような数式を入力する
=INDIRECT("R" & ROW([#見出し]) & "C",0)

上記の計算式を入力すると、テーブル名が自動的に付けてくれる。

=INDIRECT("R" & ROW(テーブル1[#見出し]) & "C",0)

手順詳細

テーブルを用意して、対象の列の1つのセルに「=INDIRECT("R" & ROW([#見出し]) & "C",0)」と入力する。

Excel テーブルの見出し(列名)の値を相対的に取得する方法
テーブルを用意して、対象の列の1つのセルに「=INDIRECT("R" & ROW([#見出し]) & "C",0)」と入力する。

テーブルの名称が「テーブル1」の場合、自動的にテーブル名が付加されて計算式が出来上がる。

Excel テーブルの見出し(列名)の値を相対的に取得する方法
テーブルの名称が「テーブル1」の場合、自動的にテーブル名が付加されて計算式が出来上がる。

解説

  • ROW([#見出し]):テーブルの見出し(タイトル行)が何行目かを調べる。(たとえば見出しが3行目なら「3」になる)
  • “R” & ROW([#見出し]) & “C”:「R3C」みたいな文字を作る。これは「3行目・同じ列」という意味。
  • INDIRECT(…,0):その「R3C」を本物のセルとして読み取る。(0は「R1C1形式で読み取るよ」という指定)

方法2:INDEX関数とCOLUMNS関数を組み合わせる

列番号を指定して取得する方法は、INDEX関数を使う方法だ。

手順

  1. テーブルの開始列をA列とする
  2. 以下のような数式を入力する: =INDEX([#見出し], COLUMNS($A:A))
  3. 必要な列までドラッグして計算式を設定
=INDEX([#見出し], COLUMNS($A:A))

手順詳細

テーブルを用意して、対象の列の1つのセルに「=INDEX([#見出し], COLUMNS($A:A))」と入力する。

Excel テーブルの見出し(列名)の値を相対的に取得する方法
テーブルを用意して、対象の列の1つのセルに「=INDEX([#見出し], COLUMNS($A:A))」と入力する。

テーブルの名称が「テーブル1」の場合、自動的にテーブル名が付加されて計算式が出来上がる。

Excel テーブルの見出し(列名)の値を相対的に取得する方法
テーブルの名称が「テーブル1」の場合、自動的にテーブル名が付加されて計算式が出来上がる。

列を選択してドラッグすると

Excel テーブルの見出し(列名)の値を相対的に取得する方法
列を選択してドラッグすると

計算式がコピーされて、COLUMNS($A:A) の部分が自動的に置き換えられる

Excel テーブルの見出し(列名)の値を相対的に取得する方法
計算式がコピーされて、COLUMNS($A:A) の部分が自動的に置き換えられる

解説

  • Table1[#見出し] は、テーブルの見出し行全体を表す
  • COLUMNS($A:A) は、数式をコピーしたときに「列数」を自動で増やす。右側のAは「$」を付けないことがポイント
  • つまり、右方向にコピーするたびに、見出し名を1列ずつ取得できる

列A列B列C
商品名単価数量

上記のテーブルで、
=INDEX(テーブル1[#見出し],1) → 「商品名」
=INDEX(テーブル1[#見出し],2) → 「単価」
=INDEX(テーブル1[#見出し],3) → 「数量」
というように取得できる。


方法3:MATCH関数で動的に列番号を求める

見出しの文字列から列番号を取得したい場合は、MATCH関数が便利だ。

手順

=INDEX([#見出し], MATCH("姓", [#見出し], 0))

この場合、「単価」という見出し文字列が返る。
見出し名を別セルに指定すれば、柔軟な参照が可能になる。

解説

  • =MATCH(“姓”, [#見出し], 0):「姓」という見出しが、テーブルの何列目にあるかを返す。結果をINDEX関数と組み合わせることで、任意の見出しを動的に取得できる。

PR

注意点

  • テーブル名(例:Table1)は実際のシート上で確認すること
  • [#Headers] は「#」を含む特殊な構文なので、手入力よりも数式バーから選ぶのが確実
  • テーブル外のセルを参照するときは絶対参照($A$1など)を意識する

まとめ

Excelのテーブル見出しを相対的に取得する方法を覚えると、列の追加や順序変更に強い柔軟な表が作れる。
INDEX関数とCOLUMNS関数、またはMATCH関数を使い分けることで、見出しを自動的に取得・参照できるようになる。
特に、動的にテーブルを扱う作業や報告書の自動化には非常に効果的だ。

\ITメモが役に立ったら/

ITメモをサポートする!
Office
PR

コメント

タイトルとURLをコピーしました