INDIRECT関数は、数式の参照先をセルの値で表示できる関数です。INDIRECT関数を活用すると、動的なセルを参照できるようになるため、複雑な計算や大規模なデータ分析の際によく使用されています。
本記事では、INDIRECT関数の使い方や併用する関数、エラー表示が生じた際の原因と対処法などを紹介します。ExcelやGoogleスプレッドシートで参照先を動的に切り替える作業が多い方は、最後までご覧ください。
目次
INDIRECT関数とは?
INDIRECT関数とは、ExcelやGoogleスプレッドシートを利用する際、文字列でセルの位置を表現できる関数です。INDIRECT関数はセルに入力された固定値をそのまま表示するのではなく、セルに表示された場所に記載されている数値を読み取るのが特徴です。
動的なセル参照を読み取れるため、大規模なデータ分析や複雑な計算処理の際に使用されます。
ExcelとスプレッドシートでのINDIRECT関数の使い方
ExcelやGoogleスプレッドシートで利用する際、INDIRECT関数の使い方は基本的に一緒です。基本の構文は「=INDIRECT(参照文字列, 参照形式)」となります。=INDIRECTの後に、セルの位置をそのまま入力するか、”(ダブルクオテーション)で囲うかによって、表示内容が異なります。
たとえば、A4セルに「A2」、A2セルに「唐揚げ弁当」と書かれていたとしましょう。B2セルに「=INDIRECT(A4)と入力した場合、INDIRECT関数はまずA4セルに書かれている文字や数値を認識します。A2と認識したあとは、取得したデータをセル名や参照範囲へ変換する点が特徴です。
A2をセルと認識した後、A2セルに書かれている値を読み取り、B2セルには「唐揚げ弁当」と表示される仕組みです。
一方、「=INDIRECT(“A4”)」と書かれていた場合、INDIRECT関数は「””」で囲まれた数値を文字列として認識します。仮にA4セルに数字や文字が書かれていても、「A4」と表示される仕組みです。
INDIRECT関数は他の関数や機能と組み合わせて利用
INDIRECT関数は単独で使用するケースは少なく、ほかの関数や機能と併用することで、データ検索やデータ分析をより効率化できます。ここではINDIRECT関数と併用する頻度の多い関数と機能を紹介します。
VLOOKUP関数を併用した場合
VLOOKUP関数は、ExcelまたはGoogleスプレッドシートの同じシート内から、カテゴリごとに分類された複数の商品データを取得する際に併用します。
VLOOKUP関数とは、指定した範囲内から該当するデータや関連する情報を効率的に抽出する関数です。VLOOKUP関数を使用する際の構文は、=VLOOKUP(検索値,範囲,列番号,検索方法)と記載します。
たとえば、肉と魚、野菜の商品データが以下3つの範囲に記載されていたとしましょう。
- A13:B16(肉)
- D13:E16(魚)
- G13:F16(野菜)
事前に商品名やカテゴリを入力したうえで、C列やD列などに上記の「A13:B16」といった、検索範囲を入力しておきます。検索範囲の記載は、シート上で参照すべき範囲を明確化するのが目的です。
仮に検索範囲をC列に記載してC4セルを参照したい場合、D4セルに=VLOOKUP(A4,INDIRECT(C4),2,FALSE)と打ち込みます。
上記の数式はINDIRECT関数がC4セルの参照範囲を表示し、参照範囲からVLOOKUP関数がA4セルの商品名をもとに該当データを検索・表示する仕組みです。
MATCH関数を併用した場合
MATCH関数との併用は大量のデータ分析を行う際に適しています。シートの修正や更新があった場合でも、参照先を動的に調整できるためです。
MATCH関数とは特定の範囲から、特定の値や文字列がどの場所に位置するかを列や行番号で示す関数です。
MATCH関数を使用する際、構文は=MATCH(検索値, 範囲,検索の型)となります。検索の型には数値が入り、値によって検索方法を決定する仕組みです。
「0」の場合は完全一致のみを検索、「1」を指定すると次の行も含めて該当するデータを探します。
たとえば、スポーツショップで以下5つのジャンルの商品が、店舗で上位の売上を占めていたとしましょう。
| ジャンル | 毎月の売上額 |
|---|---|
| 野球 | 100万 |
| サッカー | 50万 |
| テニス | 40万 |
| バスケットボール | 20万 |
| バレーボール | 10万 |
スポーツのジャンルをExcelまたはGoogleスプレッドシートのセルA2~A6に打ち込み、B2~B6には毎月の売上額を入力したとします。
MATCH関数は、テニスがA2~A6の何番目のデータに該当するかを示すのが役割です。D列に構文を入力して、「=MATCH(“テニス”,A2:A6,0)」と入力すると、3と表示されます。正しく出力されたら、今度はINDIRECT関数を使用してテニス関連商品の売上額を表示します。
E列に「=INDIRECT(“B”&MATCH(“テニス”,A2:A6,0)+1)」と入力すると、テニス関連商品の売上額が記載された「40万」が表示される仕組みです。+1を入力した理由は、データ分析の範囲に見出し行を含めていたためです。
SUM関数と併用した場合
SUM関数とは指定したセル内の合計値を自動的に計算する関数です。INDIRECT関数と併用する際は、営業担当者や顧客別の売上予測、商品別の在庫数算出など、複数のデータから特定の数値を比較したい場面で適しています。
たとえば、営業担当者が以下の表を活用し、「A社」と「C社」、「B社」と「D社」など、特定顧客の売上を算出するとしましょう。
| 顧客名 | 売上額 |
|---|---|
| A社 | 2,000万 |
| B社 | 1,500万 |
| C社 | 1,000万 |
| D社 | 400万 |
| E社 | 100万 |
ExcelやGoogleスプレッドシートでA3〜A7に顧客名を入力し、売上額をB3〜B7に記載したとします。特定の範囲内の合計値を算出する際、=SUM(INDIRECT(“B:B”))の構文を使用します。
仮に「A社」と「C社」の売上を算出する場合、=SUM(INDIRECT(“A3:A5”)を空いているセルに入力すると、3,000万と表示される仕組みです。
ドロップダウンリストと併用した場合
ドロップダウンリストと併用した場合、選択した項目に関連したデータを表示できます。ExcelやGoogleスプレッドシートで該当するデータが別のシートにあった場合も、INDIRECT関数を使えばシート名を参照するため、データの表示が可能です。
INDIRECT関数と併用する際は、以下の手順でドロップダウンリストを作成します。
INDIRECT関数とドロップダウンリストの併用方法
- ExcelやGoogleスプレッドシートに必要なデータを入力する
- 画面上部の数式タブから「名前の管理」を選び、「新規作成」をクリックする
- 「名前」に商品名やカテゴリ名を入力し、「参照範囲」にサブカテゴリの
- リスト範囲を入力する
- サブカテゴリで設定したい内容をすべて追加する
- サブカテゴリを挿入したいセルを選ぶ
- 画面上部のデータから「入力規則」をクリックする
- 「設定」からメニュー内の「リスト」を選ぶ
- 「ソース」に数式を入力する
- 正しく表示されるかを確認する
ドロップダウンリストの完成後、INDIRECT関数の構文を入力します。たとえば、空いたセルに=INDIRECT(A5&“!A5”)と入力した場合、A5の入力内容と別のシートに記載したA5の内容を参照可能です。
INDIRECT関数が正しく反映されない場合の原因と対処法
エラー表示の内容によって、INDIRECT関数が正しく反映されない原因が異なります。ここでは以下3つの原因と対処法を紹介します。
#REF!エラーが表示されるケース
「#REF!」のエラー表示は、指定した参照先が存在しない場合やスペルミスなどがあった際に発生します。「#REF!」の表示を防ぐ方法には、構文を打ち込む際に=IFERROR(INDIRECT(文字列), "参照先")を活用するのがおすすめです。
IFERRORを活用すると、数式が間違っていた場合や参照先が存在しない場合、該当のセルが空欄で表示されます。
N/Aエラーが表示されるケース
「N/A」エラーが表示される原因はVLOOKUP関数を活用した際、指定された範囲内や参照先に該当の値が存在しないのが原因です。
「N/A」エラーの表示を防ぐには、構文入力の際に=IFNA(式),””)と入力しましょう。=IFNA(文字列),”参照先”)と入力すると、指定された範囲内や参照先に該当の値がない場合、セルが空欄で表示されます。
#VALUE!エラーが表示されるケース
「#VALUE!」エラーが表示される場合、参照元や数式の間違いなど、複数の原因が考えられます。エラー表示が出た場合は、まず「F2」キーを叩いてセルの中身を確認し、エラー表示の原因を把握しましょう。
セルを確認する際は参照先やセルの形式、構文の書き方が間違っていないかなどを確認し、誤記や抜け漏れがあった際は修正します。
また、IFERRORを活用すると、エラーが発生したセルに「入力値の確認」や空欄表示などが出るため、修正が必要なセルを正確に把握できます。
まとめ:INDIRECT関数を使ってデータ集計を効率化しよう
INDIRECT関数とは動的なセルを参照できるため、大規模なデータ分析や複数のデータを比較する際に活用する関数です。VLOOKUP関数やMATCH関数などと併用すると、データ分析を効率的に進められます。
関数を使って計算をする際はIFERRORやIFNAの構文を入力すると、参照先や構文などにミスがあった際も、原因を素早く特定できるでしょう。ただし、Excelやスプレッドシートの操作方法、関数の使い分けに不安を抱えるケースも考えられます。
『freee販売』を活用すれば、売上管理や原価管理、請求管理など、複雑な計算が求められる業務をシステム上で完結できます。システム上に登録した売上や仕入に関するデータは自動で仕訳されるため、会計ソフトで同じ内容を入力せずに済む点も魅力です。
事務作業の工数やミスの削減に取り組んでいる方は、『freee販売』の導入をご検討ください。
よくある質問
INDIRECT関数とは?
ExcelやGoogleスプレッドシートを活用した際、セルの位置を文字列で表示する関数です。動的なセル参照ができるようになり、複雑な計算や大規模なデータ処理の効率化が見込めます。詳細は「INDIRECT関数とは?」をご確認ください。
ExcelでのINDIRECT関数の使い方とは?
=INDIRECT(参照文字列, [参照形式])の構文を活用します。構文の中身はGoogleスプレッドシートを使う際も同じです。詳細は「ExcelとスプレッドシートでのINDIRECT関数の使い方」をご確認ください。
