76

現在のセルへの参照を取得するにはどうすればよいですか?

たとえば、列Aの幅を表示する場合は、次を使用できます。

=CELL("width", A2)

ただし、式は次のようになります。

=CELL("width", THIS_CELL)
4

13 に答える 13

52

数年遅すぎる:

完全を期すために、私はさらに別の答えを出したい:

まず、 Excel-[オプション] -> [数式]に移動し、 R1C1参照を有効にします。次に、

  =CELL("width", RC)

RC常に現在の行、現在の列、つまり「このセル」を参照します。

Rick Teacheyのソリューションは、基本的にA1参照スタイルで同じことを可能にするための微調整です(Joeyの回答に対するGSergのコメント、およびPatrick McDonaldの回答に対する彼のコメントにも注意してください)。

乾杯
:-)

于 2014-08-13T16:38:24.343 に答える
50

THIS_CELLという名前の数式を作成します

  1. 現在のワークシートで、セルA1を選択します(これは重要です!)

  2. 開くName Manager(Ctl + F3)

  3. クリックNew...

  4. 「THIS_CELL」(または私の好みである「THIS」)をに入力しますName:

  5. 次の式をに入力しますRefers to:

    =!A1

    注:セルA1が選択されていることを確認してください。この式は、ActiveCellに関連しています。

  6. Scope:[選択]の下Workbook

  7. クリックしOKて閉じますName Manager

ワークシートの数式を希望どおりに使用します

=CELL("width",THIS_CELL)

編集:使用するよりも優れたソリューションINDIRECT()

私が与えた解決策はINDIRECT()、2つの理由で関数を使用するどの解決策よりも優先されるべきであることに注意する価値があります。

  1. これは不揮発性INDIRECT()ですが、揮発性のExcel関数であるため、頻繁に使用するとブックの計算が大幅に遅くなります。
  2. ROW() COLUMN()これははるかに単純であり、アドレス(の形式)をアドレスへの範囲参照に変換し、再び範囲参照に戻す必要はありません。

編集:ブックスコープのシート依存の名前付き範囲の詳細については、この質問も参照してください。

編集:このアイデアのバリエーションについては、以下の@imixの回答も参照してください(RCスタイルの参照を使用)。その場合、=!RC名前THIS_CELL付き範囲の数式に使用することも、RC直接使用することもできます。

于 2014-03-08T02:54:11.687 に答える
37

あなたが使うことができます

=CELL("width", INDIRECT(ADDRESS(ROW(), COLUMN())))
于 2009-04-16T18:27:39.947 に答える
31

=ADDRESS(ROW(),COLUMN(),4) 現在のセルの相対アドレスが表示されます。 =INDIRECT(ADDRESS(ROW(),COLUMN()-1,4))現在のセルの左側にあるセルの =INDIRECT(ADDRESS(ROW()-1,COLUMN(),4))内容が表示されます現在のセルの上のセルの内容が表示されます(現在の合計を計算するのに最適です)

CELL()関数を使用すると、最後に変更されたセルに関する情報が返されます。したがって、新しい行または列を入力すると、CELL()参照が影響を受け、現在のセルではなくなります。

于 2012-04-11T11:43:42.540 に答える
7

A2はすでに相対参照であり、セルを移動するか数式をコピーすると変更されます。

于 2009-04-16T18:23:46.010 に答える
7
=ADDRESS(ROW(),COLUMN())
=ADDRESS(ROW(),COLUMN(),1)
=ADDRESS(ROW(),COLUMN(),2)
=ADDRESS(ROW(),COLUMN(),3)
=ADDRESS(ROW(),COLUMN(),4)
于 2013-12-28T14:22:52.983 に答える
6

INDIRECT()なし:=CELL("width", OFFSET($A$1,ROW()-1,COLUMN()-1) )

于 2014-07-02T14:01:33.857 に答える
2

私はこれを(私にとって)処理する最良の方法は以下を使用することです:

Dim MyString as String
MyString = Application.ThisCell.Address
Range(MyString).Select

お役に立てれば。

于 2013-06-28T16:11:47.577 に答える
1

テーブル内では[@]、(残念ながら)どのExcelが自動的に展開されるかを使用できますTable1[@]が、機能します。(私はExcel 2010を使用しています)

たとえば、2つの列[Change]とを持っている場合[Balance]、これを列に入れ[Balance]ます。

=OFFSET([@], -1, 0) + [Change]

もちろん、これは行の順序に依存するため(他のほとんどのソリューションと同様)、少し壊れやすいことに注意してください。

于 2011-12-19T21:38:08.870 に答える
1

より安全で、アプリケーションの速度を低下させない、より良い方法があります。Excelの設定方法では、セルは値または数式のいずれかを持つことができます。数式はそれ自体のセルを参照できません。新しい値によって別の計算が発生するため、無限ループになります。ヘルパー列を使用して、他のセルに入力した内容に基づいて値を計算します。例えば:

列Aは真または偽、列Bには金銭的価値が含まれ、列Cには次の数式が含まれます:= B1

ここで、列AがTrueで、列Bがゼロより大きい場合にのみ、列Bが条件付き形式で黄色で強調表示されることを計算します。

= AND(A1 = True、C1> 0)

次に、列Cを非表示にすることを選択できます

于 2014-06-27T19:31:56.720 に答える
1

@ rick-teacheyによるトップアンサーへの完全なクレジットですが、条件付きフォーマットで動作するようにそのアプローチを拡張することができます。この回答が完成するように、リックの回答を要約形式で複製してから拡張します。

  1. ワークシートのセルを選択A1します。
  2. と呼ばれる名前付き範囲を作成し、THISをに設定Refers to:=!A1ます。

THIS条件付き書式の数式で使用しようとすると、エラーが発生します。

You may not use references to other workbooks for Conditional Formatting criteria

THIS条件付き書式の数式で作業する場合:

  1. と呼ばれる別の名前付き範囲を作成し、をTHIS_CFに設定Refers to:=THISます。

THIS_CFこれで、条件付き書式数式で現在のセルを参照するために使用できます。

このアプローチを使用して、、、、などの他の相対的な名前付き範囲を作成することもできTHIS_COLUMNます。THIS_ROWROW_ABOVECOLUMN_LEFT

于 2019-11-20T18:06:52.567 に答える
0

編集:Cell( "width")は最後に変更されたセルの幅を返すため、以下は間違っています。

Cell("width")現在のセルの幅を返すため、現在のセルへの参照は必要ありません。ただし、必要な場合cell("address")は現在のセルのアドレスを返すため、現在のセルへの参照が必要な場合は、を使用しますindirect(cell("address"))。ドキュメントを参照してください:http ://www.techonthenet.com/excel/formulas/cell.php

于 2011-09-15T14:40:03.113 に答える
0

この数式を含むセルへの参照(自己参照): address(row(); column())

たとえば、上記のセルの値を取得します: indirect(address(row()-1; column()))

またはOPが尋ねたもの: = Cell(width; address(row(); column()))

于 2021-07-12T16:13:39.677 に答える