現在のセルへの参照を取得するにはどうすればよいですか?
たとえば、列Aの幅を表示する場合は、次を使用できます。
=CELL("width", A2)
ただし、式は次のようになります。
=CELL("width", THIS_CELL)
現在のセルへの参照を取得するにはどうすればよいですか?
たとえば、列Aの幅を表示する場合は、次を使用できます。
=CELL("width", A2)
ただし、式は次のようになります。
=CELL("width", THIS_CELL)
数年遅すぎる:
完全を期すために、私はさらに別の答えを出したい:
まず、 Excel-[オプション] -> [数式]に移動し、 R1C1参照を有効にします。次に、
=CELL("width", RC)
RC
常に現在の行、現在の列、つまり「このセル」を参照します。
Rick Teacheyのソリューションは、基本的にA1参照スタイルで同じことを可能にするための微調整です(Joeyの回答に対するGSergのコメント、およびPatrick McDonaldの回答に対する彼のコメントにも注意してください)。
乾杯
:-)
現在のワークシートで、セルA1を選択します(これは重要です!)
開くName Manager
(Ctl + F3)
クリックNew...
「THIS_CELL」(または私の好みである「THIS」)をに入力しますName:
次の式をに入力しますRefers to:
=!A1
注:セルA1が選択されていることを確認してください。この式は、ActiveCellに関連しています。
Scope:
[選択]の下Workbook
。
クリックしOK
て閉じますName Manager
=CELL("width",THIS_CELL)
編集:使用するよりも優れたソリューションINDIRECT()
私が与えた解決策はINDIRECT()
、2つの理由で関数を使用するどの解決策よりも優先されるべきであることに注意する価値があります。
INDIRECT()
ですが、揮発性のExcel関数であるため、頻繁に使用するとブックの計算が大幅に遅くなります。ROW()
COLUMN()
これははるかに単純であり、アドレス(の形式)をアドレスへの範囲参照に変換し、再び範囲参照に戻す必要はありません。編集:ブックスコープのシート依存の名前付き範囲の詳細については、この質問も参照してください。
編集:このアイデアのバリエーションについては、以下の@imixの回答も参照してください(RCスタイルの参照を使用)。その場合、=!RC
名前THIS_CELL
付き範囲の数式に使用することも、RC
直接使用することもできます。
あなたが使うことができます
=CELL("width", INDIRECT(ADDRESS(ROW(), COLUMN())))
=ADDRESS(ROW(),COLUMN(),4)
現在のセルの相対アドレスが表示されます。
=INDIRECT(ADDRESS(ROW(),COLUMN()-1,4))
現在のセルの左側にあるセルの
=INDIRECT(ADDRESS(ROW()-1,COLUMN(),4))
内容が表示されます現在のセルの上のセルの内容が表示されます(現在の合計を計算するのに最適です)
CELL()関数を使用すると、最後に変更されたセルに関する情報が返されます。したがって、新しい行または列を入力すると、CELL()参照が影響を受け、現在のセルではなくなります。
A2
はすでに相対参照であり、セルを移動するか数式をコピーすると変更されます。
=ADDRESS(ROW(),COLUMN())
=ADDRESS(ROW(),COLUMN(),1)
=ADDRESS(ROW(),COLUMN(),2)
=ADDRESS(ROW(),COLUMN(),3)
=ADDRESS(ROW(),COLUMN(),4)
INDIRECT()なし:=CELL("width", OFFSET($A$1,ROW()-1,COLUMN()-1) )
私はこれを(私にとって)処理する最良の方法は以下を使用することです:
Dim MyString as String
MyString = Application.ThisCell.Address
Range(MyString).Select
お役に立てれば。
テーブル内では[@]
、(残念ながら)どのExcelが自動的に展開されるかを使用できますTable1[@]
が、機能します。(私はExcel 2010を使用しています)
たとえば、2つの列[Change]
とを持っている場合[Balance]
、これを列に入れ[Balance]
ます。
=OFFSET([@], -1, 0) + [Change]
もちろん、これは行の順序に依存するため(他のほとんどのソリューションと同様)、少し壊れやすいことに注意してください。
より安全で、アプリケーションの速度を低下させない、より良い方法があります。Excelの設定方法では、セルは値または数式のいずれかを持つことができます。数式はそれ自体のセルを参照できません。新しい値によって別の計算が発生するため、無限ループになります。ヘルパー列を使用して、他のセルに入力した内容に基づいて値を計算します。例えば:
列Aは真または偽、列Bには金銭的価値が含まれ、列Cには次の数式が含まれます:= B1
ここで、列AがTrueで、列Bがゼロより大きい場合にのみ、列Bが条件付き形式で黄色で強調表示されることを計算します。
= AND(A1 = True、C1> 0)
次に、列Cを非表示にすることを選択できます
@ rick-teacheyによるトップアンサーへの完全なクレジットですが、条件付きフォーマットで動作するようにそのアプローチを拡張することができます。この回答が完成するように、リックの回答を要約形式で複製してから拡張します。
A1
します。THIS
をに設定Refers to:
し=!A1
ます。THIS
条件付き書式の数式で使用しようとすると、エラーが発生します。
You may not use references to other workbooks for Conditional Formatting criteria
THIS
条件付き書式の数式で作業する場合:
THIS_CF
に設定Refers to:
し=THIS
ます。THIS_CF
これで、条件付き書式数式で現在のセルを参照するために使用できます。
このアプローチを使用して、、、、などの他の相対的な名前付き範囲を作成することもできTHIS_COLUMN
ます。THIS_ROW
ROW_ABOVE
COLUMN_LEFT
編集:Cell( "width")は最後に変更されたセルの幅を返すため、以下は間違っています。
Cell("width")
現在のセルの幅を返すため、現在のセルへの参照は必要ありません。ただし、必要な場合cell("address")
は現在のセルのアドレスを返すため、現在のセルへの参照が必要な場合は、を使用しますindirect(cell("address"))
。ドキュメントを参照してください:http ://www.techonthenet.com/excel/formulas/cell.php
この数式を含むセルへの参照(自己参照): address(row(); column())
たとえば、上記のセルの値を取得します: indirect(address(row()-1; column()))
またはOPが尋ねたもの: = Cell(width; address(row(); column()))