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


96

行番号と列番号を指定してセルの内容を取得したい。行と列の番号はセルに保存されます(ここでは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数式と同等のものを探しています。


もう少しコンテキストを取得できますか?Excelの数式だけを使用していますか?VBA?他の方法?
サラディンアカラ2011年

回答:


141

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

=INDIRECT(ADDRESS(B1,B2))

または

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

どちらも機能します。INDIRECTOFFSETはどちらも揮発性関数であることに注意してください。揮発性関数は再計算のたびに計算されるため、計算が遅くなる可能性があります。


これは、右括弧の数が適切になるように編集したいので、十分に役立ちます。
Wyck、2014年

6
この質問/回答の人気を考えると、揮発性関数が何であるかについてここに短い文があれば素晴らしいでしょう。
LondonRob

2番目のフォームでは、$ a $ 1に応じて、後でシートを編集するときに$ a $ 1を移動しないでください。
Erk

INDIRECT+ ADDRESSは進むべき道です。私の言語のExcelは、OFFSETピリオドで区切られた2つの単語に変換されます。それは最悪です(関数名のウムラウトと一緒に)!
Bitterblue '19

29

= index(ARRAY、ROW、COLUMN)を試してください

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

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


2

少し時間がかかりましたが、動的にした方法を次に示します。ソートされたテーブルには依存しません。

まず、州名の列(列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の動的な値から状態の名前を返します

カウント列の値は、データが入力されるにつれて時間とともに変化するので、どの州が最も航空機に属しているかが常にわかります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.