Royには、別のブックのセルを参照する数式があります。たとえば、= ‘[http://www.formville.com/C4_free-timesheets.html [Timesheet] s.xlsm] Week01’!L6です。

彼は、数式がより汎用的になるように、数式に別のセルからワークシート(Week01)の名前を取得させたいと考えています。 Royは、セルB9にあるワークシート名を使用できるように、数式をどのように変更する必要があるのか​​疑問に思います。

これを処理する最も簡単な方法は、INDIRECTワークシート関数を使用することです。基本的に、セルアドレスを取得して「ポインタ」として使用し、そのセルから値を取得します。たとえば、次を使用できます。

=INDIRECT(L6)

これにより、セルL6の値がフェッチされ、本当に必要なものへのポインタとして使用されます。したがって、セルL6に「A7」が含まれている場合、関数はセルA7にあるものすべての値を返します。興味深いことに、この方法で関数を呼び出すと、異なる結果が得られます。

=INDIRECT("L6")

結果は、セルL6の内容をポインターとして使用する代わりに、セルL6の内容になります。

この情報を使用すると、INDIRECT関数で適切に機能するアドレスを簡単にまとめることができます。

=INDIRECT("'[Timesheets.xlsm]" & K2 & "'!L6")

この数式は、目的のワークシートの名前がセルK2に格納されていることを前提としています。有効なワークシート名がそのセルにない場合、数式は#REFエラーを返します。

このアプローチの重要な「落とし穴」の1つは、ブック(Timesheets.xlsm)が開いていることを確認する必要があることです。 INDIRECTは、開いていないブックには到達しません。開いていない場合は、目的の値ではなく#REFエラーが発生します。

数式をさらに汎用的にしたい場合は、次のように、ワークシート名、ワークシート名、およびセル参照をすべてワークシート内のセルから取得できます。

=INDIRECT("'[" & K1 & "]" & K2 & "'!" & K3)

この場合、K1にはワークブック名​​(Timesheets.xlsm)が含まれ、K2にはワークシート名( “Week01″)が含まれ、K3には目的のセル( “L6″)が含まれます。

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

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