web-dev-qa-db-ja.com

行番号と列番号を指定してセルの内容を取得する

行番号と列番号を指定してセルの内容を取得したいです。行番号と列番号はセル(ここではB1、B2)に保管されています。私は以下の解決策がうまくいくことを知っていますが、彼らは少しハックを感じます。

ソル1

=CELL("contents",INDIRECT(ADDRESS(B1,B2)))

ソル2

=CELL("contents",OFFSET($A$1, B1-1,B2-1))

これ以上冗長な方法はありませんか。 (= CellValue(row、col)などのように)?

編集/明確化:私はExcelワークシートの公式を使いたいだけです。 VBAはありません。つまり、VBA Cells()メソッドと同等のExcel式を探します。

94
Philipp

式のCELL()部分は必要ありません。

=INDIRECT(ADDRESS(B1,B2))

または

=OFFSET($A$1, B1-1,B2-1)

両方ともうまくいきます。 INDIRECTOFFSETはどちらもvolatile関数です。揮発性関数は再計算ごとに計算されるため、計算が遅くなる可能性があります。

140

Try = index(ARRAY、ROW、COLUMN)

配列:シート全体を選択します。行、列:行と列の参照

式を見ている人にとっては、これは理解しやすいはずです。

29
Albert Shenko

しばらく時間がかかりましたが、動的にした方法は次のとおりです。ソートテーブルには依存しません。

まず、州名の列(A列)と各州の航空機の列(B列)から始めました。 (行1はヘッダー行です)。

航空機の数を含むセルを見つけることは次のとおりです。

=MATCH(MAX($B$2:$B$54),$B$2:$B$54,0)+MIN(ROW($B$2:$B$54))-1

私はそれをセルに入れて、そのセルに "StateRow"という名前を付けました。それから上のヒントを使って、私はこれを思いついたのです。

=INDIRECT(ADDRESS(StateRow,1))

これは、行 "StateRow"、列1の動的値から州の名前を返します。

現在、データが入力されるにつれてcount列の値が経時的に変化するので、どの州が最も航空機を持っているかを常に把握しています。

2
user3573562