Michaelには、月の名前(1月、2月など)が記載されたワークシートがあります

列Aで。列Bで、列Aで指定されているワークシートのセルB11から値を取得したいと考えています。したがって、列Aに月「3月」が含まれている場合、3月のすぐ右側のセル(列B)に)

彼は3月に価値を引き出したいと思っています!B11。 Michaelは、INDIRECT関数がこれに役立つはずだと信じていますが、それを機能させることはできません。

幸いなことに、Michaelは正しいです。これを行うには、INDIRECT関数を使用できます。関数の基本的な使用法は次のようになります:

=INDIRECT(A1&"!B11")

エラーをチェックする関数で数式を囲むことにより、数式のより「堅牢な」バージョンを作成できます。エラーがある場合は、「データなし」というフレーズがセルに表示されます:

=IFERROR(INDIRECT(A1&"!B11"),"No Data")

これらのアプローチでは、セルA1にあるものを直接使用します。これは、A1の値がテキストと1つの単語である場合に機能します。 A1に2番目の単語(「7月の生産」など)がある場合は、セルA11にあるものの周りにアポストロフィが含まれるように、数式を少し変更する必要があります。

=IFERROR(INDIRECT("'"&A1&"'!B11"),"No Data")

アポストロフィはワークシート名を囲むために使用されるため、セルA1にアポストロフィを含むテキストを含めることはできません。したがって、セルA1の「7月のプロダクション」は正常に機能しますが(「7月のプロダクション」という名前のワークシートがある場合)、アポストロフィのために「7月のプロダクション」は機能しません。

さらに、セルA1にあるものに先頭または末尾のスペースがある場合は、それらのスペースを削除する必要があります。補正する最も簡単な方法は、TRIM関数を使用することです。

=IFERROR(INDIRECT("'"&TRIM(A1)&"'!B11"),"No Data")

A1の値が実際の文字列である場合、これまでに提示されたすべてのバリエーションは問題なく機能します。 A1の値が実際の日付であり、月の名前のようにフォーマットされている場合、これらは機能しません。日付は内部で数値として格納され、これまでに説明した数式の1つを使用して、日付のシリアル番号をセル参照に追加しようとするため、エラーが発生します。代わりに、TEXT関数を使用して、A1の日付を月の名前に変換する必要があります。

=IFERROR(INDIRECT(TEXT(A1,"mmmm")&"!B11"),"No Data")

他の人がセルA1に月の名前を入力することを期待している場合は、その入力をできるだけ確実に行うことをお勧めします。そのための最良の方法は、データ検証を使用して、セルA1に入力できるものを制限することです。 (データ検証の使用方法は、_ExcelTips_の他の問題で説明されています。)

_ExcelTips_は、費用効果の高いMicrosoftExcelトレーニングのソースです。

このヒント(12701)は、Microsoft Excel 2007、2010、2013、2016、2019、およびOffice365のExcelに適用されます。