-1

行番号と列名で Excel テーブルから値を取得できるようにしたいと考えています (コードの読みやすさと堅牢性のため)。

数式では、列ヘッダー テキストで構造化参照を使用して、次のようにテーブルから値を取得できます。

=INDIRECT(ADDRESS(<absolute_line_number>;COLUMN(<table_name>[<column_name>])))

ユーザーが列の名前を変更すると、式内のすべての構造化参照が自動的に更新されるため、これは式に対して堅牢です。

ただし、VBA コードの場合はそうではありません。

Worksheet.CodeNameワークシートの場合、ユーザーが表示されているシート名を変更しても同じままになる VBA コードで使用するために定義することができます。Excel テーブルの AFAICS には、そのようなプロパティはありません。


私が現在持っている最良のアイデアは、テーブル ヘッダーを 1 セルの名前付き範囲にすることです。次に、次のように VBA のテーブルから値を取得できます。

<sheet_codename>.Cells(<line_number>,Range("<range_name>").Column)

ただし、名前付き範囲がテーブルから切断されているため、これは気になります。たとえば、シート上のテーブルを再配置すると、範囲は古い場所に残ります。

より良いオプションはありますか?「より良い」とは、具体的には次のことを意味します。

  • テーブル内の列の名前変更および/または再配置を維持し、少なくともシート内でテーブルを移動します
4

2 に答える 2