web-dev-qa-db-ja.com

Excelで(セルのコンテンツを介して)名前付きテーブル列を動的に参照する

Excel 2007でExcelテーブル列を動的に参照するにはどうすればよいですか?名前付きテーブルの名前付き列を参照したいのですが、参照される列はセルの値によって異なります。

Excelにテーブルがあります(これをTable1と呼びます)。その列の1つを参照し、その列の番号をCOUNT参照します。別のセル(_A1_)の値から参照列を動的に識別して、次の結果を得ることができるようにします。_A1_を変更すると、カウントされる式Table1 [DynamicallyReferencedColumnName]が新しい参照に更新されます。

例:

  • _A1_ = namesの場合、式はCOUNT(Table1[names])になります。
  • _A1_ = lastnameの場合、式はCOUNT(Table1[lastname])になります。

=COUNT(Table1[INDIRECT("$A$1")])を使用してみましたが、Excelには数式にエラーが含まれていると表示されています。

これどうやってするの?


追伸関連する可能性のあるこのMSDNドキュメントを見つけました: Excel再計算

12
rcphq

INDIRECT()を使用するとほとんど問題はありませんでしたが、ロジックが少しずれていました。代わりにこれを試してください:

_=COUNT(INDIRECT("Table1["&A1&"]"))
_

覚えておくべき重要な点は、INDIRECT()は最初の引数にテキスト(つまり文字列)のみをとることです。したがって、テーブル参照のすべての部分を関数としてテキストとして渡す必要があります。

13
Excellll

INDIRECTメソッドの使用は機能しますが、揮発性の関数であり、スプレッドシートに大きな計算上の影響を与える可能性があるため、可能な限り回避することをお勧めします。

あなたが望むものを達成する不揮発性の代替手段はINDEX/MATCHを使用することです

COUNT(INDEX(Table1, 0, MATCH($A$1, Table1[#Headers], 0)))

-ティム

15
Tim Reczek

最初のステップは、参照する列の名前を含むテキストセルを設定します(たとえば$ A $ 1)。$ A $ 1には、たとえば "Column2"が含まれます。

次に、$ A $ 1が参照する列の数を見つけるには、= Count(indirect( "Table1 ["&$ a $ 1& "]"))になります。

この間接的な方法は、テーブル参照のすべての部分を構築するために使用でき、たとえば、異なるテーブルからルックアップするように配置することもできます

ヒント。 $ a $ 1セルが単一のテーブルのヘッダーを指すドロップダウンリストとして検証されている場合、ヘッダータイトルの変更のテーブル内の列数の変更がピックアップされます。

2

Excelの構造化参照に関する非常に優れた記事を次に示します。 Excel 2010とExcel 2007では、動作が少し異なるように見えます。

Excelテーブルでの構造化参照の使用

基本的には、テーブルを参照してから、テーブル内の列を参照します。

Generic Excel Table

この例では、次のように表1列1を参照できます。

=COUNT(Table1[Column1])

テーブルのヘッダー列に名前を付けることができます。 Column1の名前をSalesに変更すると、式は次のようになります。

=COUNT(Table1[Sales])
1
wbeard52