4

Excelブックでは、別のタブから定義された名前を参照しています(依存データの検証を取得するため)。定義された名前へのアクセスは直接機能しますが、を介してアクセスすることINDIRECTはできません。

=INDEX(DefinedName,1)範囲の最初の値を返します

=INDEX(INDIRECT("DefinedName"),1)#REFを返します!

私も試しました

=INDEX(INDIRECT("SheetName!DefinedName"),1)、ただし、#REFも返します。

サンプルファイルはこちらからダウンロードできます。

4

3 に答える 3

4

トーマス、

私はこれまでこれに出くわしたことがありませんでした。

ダイナミックINDIRECTレンジ名には互換性がないようです。Dicksブログからここに役立つリファレンスがあります

于 2012-10-18T22:11:33.853 に答える
2

完全な答えではありませんが、名前付き範囲がセル参照(この場合)ではなく配列を返しているという事実と関係がある可能性があります{"VALL";"GENADMIN";"HOSP";"CELLAR"}

名前付き範囲を削除して実際の数式に置き換え、F9数式を'実行することで、エラーを再現できます。

=INDIRECT(OFFSET(Defaults!$C$1,1,0,COUNTA(Defaults!$C:$C)-1))
=INDIRECT({"VALL";"GENADMIN";"HOSP";"CELLAR"})

Excelはシート範囲へのある種の参照を期待しているため、配列を特定のものに解決できないため、ここでは失敗します(F9キーをもう一度押すと生成されます={#REF!;#REF!;#REF!;#REF!})。

このINDEX式は、配列参照を処理できるため機能します。

=INDEX(OFFSET(Defaults!$C$1,1,0,COUNTA(Defaults!$C:$C)-1),1)
=INDEX({"VALL";"GENADMIN";"HOSP";"CELLAR"},1)
={"VALL"}

専門家ではありませんが、それが私の最高の亀裂です。

于 2012-10-18T07:06:56.437 に答える
0

これは絶対に機能します。2012年には互換性がなかったかもしれませんが、確かに2018年には機能します。正しく使用すれば、2012年にも機能したと思います。
INDIRECT関数は、TEXTを範囲参照に変換しようとします。そのTEXTは有効な参照である必要があります。
名前付き範囲はすでに範囲参照です。参照から参照を取得する必要はありません。これが、OPの例がINDIRECTを使用せずに機能する理由です。より可能性の高い実装は、OPからの値 "DefinedName"、またはセル内の任意の名前付き範囲がある場合です。次に、そのセルを間接的にポイントして、プレーンな古いテキストを見つけます。次に、そのテキストを範囲参照に変換します。

INDIRECTの数式を使用して、参照を変更することもできます。一般的なアプローチは、セルにシート名を入れてから、INDIRECTを使用してさまざまなシートからデータをプルすることです。これは主に、数式をコピーして貼り付け、シート(またはセル)参照を新しいターゲットに動的に調整する場合に役立ちます。

設定

3つの空白のワークシート(Sheet1、Sheet2、およびSheet3)が含まれているはずの空白のワークブックから始めます。含まれていない場合は、その時点に到達します。次に、次の基本事項を入力します。シート1

セルA1、「範囲参照」と入力

セルA2、「シートからの合計」と入力します

セルB1に「Sheet2!A1:A4」と入力します(「=」がないことに注意してください。このテキストは範囲参照です)。

セルC1に、「THIRD_SHEET」と入力します(このテキストは、1秒で作成する名前付き範囲に相当します)。

次に、Sheet2で、

セルA1、1を入力

セルA2、2を入力

セルA3、3を入力

セルA4、4を入力

Sheet3で

セルA1〜A4は、それぞれ100〜400に入ります。

次に、Sheet3のセルA1〜A4を参照する「THIRD_SHEET」という名前の範囲を作成します。

Sheet1:セルB2で試して、数式を入力します: "= SUM(INDIRECT(B1))"

その数式をセルC2にコピーします。

結果:

INDIRECTは、列見出しのテキストを使用して、有効な範囲参照を指し示します。これは単なるイラストです。名前付き範囲とテキスト範囲を組み合わせて使用​​することはおそらくないでしょう。「Sheet1!A1:A4」と書き出すのはあまりきれいではありませんが、標準の数式を使用してテキスト参照に到達することができます。

B2の式を変更してみてください
: "= SUM(INDIRECT(" Sheet "&COLUMN()))&"!A1:A4 "))"

次に、それをセルC2にコピーします。

結果

まあ、同じです。セルA1:A4からのSUMは、それぞれシート2と3から返されます。ただし、今回は列ヘッダーは使用されておらず、範囲参照は、文字列結合「&」演算子とCOLUMN番号を使用してINDIRECT呼び出し自体でアセンブルされています。

名前付き範囲も同じように使用できます。理解しておくべき重要なことは、間接括弧内のすべては、最初に有効なTEXT範囲参照に解決される必要があるということです。

お役に立てば幸いです。

于 2018-04-13T18:37:09.817 に答える