現在のセルへの参照を取得するにはどうすればよいですか?
たとえば、列Aの幅を表示する場合は、次を使用できます。
=CELL("width", A2)
ただし、式は次のようになります。
=CELL("width", THIS_CELL)
Name Manager
(Ctl + F3)を開きますNew...
をクリックしますName:
に「THIS_CELL」(または単に「THIS」、これが私の好みです)を入力しますRefers to:
に次の式を入力します
=!A1
注:セルA1が選択されていることを確認してください。この式はActiveCellに関連しています。
Scope:
の下でWorkbook
を選択します。
OK
をクリックして、Name Manager
を閉じます=CELL("width",THIS_CELL)
EDIT:INDIRECT()
を使用するよりも優れたソリューション
次の2つの理由により、INDIRECT()
関数を使用するソリューションよりも、ここで説明したソリューションの方が好ましいことに注意してください。
INDIRECT()
は揮発性のExcel関数であるため、不揮発性であるため、頻繁に使用するとワークブックの計算が劇的に遅くなります。ROW()
COLUMN()
の形式で)アドレスへの範囲参照に変換し、再び範囲参照に戻す必要はありません。EDIT:ワークブックスコープのシート依存の名前付き範囲の詳細については、 この質問 も参照してください。
EDIT:この考え方のバリエーションについては、以下の @ imixの答え も参照してください(RCスタイル参照を使用)。その場合、=!RC
名前付き範囲の数式にTHIS_CELL
を使用するか、単にRC
を直接使用できます。
数年遅すぎる:
完全を期すために、さらに別の答えをしたいと思います。
まず、Excel-Options->Formulasに移動してR1C1参照。次に使用する
=CELL("width", RC)
RC
は常に現在の行、現在の列、つまり「このセル」を参照します。
Rick Teacheyの解 は、基本的にA1参照スタイルで同じことを可能にするための調整です( GSergのコメントも参照) ジョーイの答えとメモに 彼のコメント パトリックマクドナルドの答えに)。
乾杯
:-)
使用できます
=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
はすでに相対参照であり、セルを移動するか数式をコピーすると変更されます。
INDIRECT()なし:=CELL("width", OFFSET($A$1,ROW()-1,COLUMN()-1) )
=ADDRESS(ROW(),COLUMN())
=ADDRESS(ROW(),COLUMN(),1)
=ADDRESS(ROW(),COLUMN(),2)
=ADDRESS(ROW(),COLUMN(),3)
=ADDRESS(ROW(),COLUMN(),4)
より安全で、アプリケーションの速度を低下させない、より良い方法があります。 Excelの設定方法では、セルに値または数式を設定できます。数式は独自のセルを参照できません。新しい値は別の計算を引き起こすため、無限ループになります..。ヘルパー列を使用して、他のセルに入力した値に基づいて値を計算します。例えば:
列AにはTrueまたはFalse、列Bには金額が含まれ、列Cには次の数式が含まれます:= B1
ここで、列AがTrueで列Bがゼロより大きい場合にのみ、列Bが条件付きフォーマットで黄色で強調表示されることを計算します...
= AND(A1 = True、C1> 0)
その後、列Cを非表示にすることを選択できます
これを処理する最良の方法は(私にとって)次を使用することです。
Dim MyString as String
MyString = Application.ThisCell.Address
Range(MyString).Select
お役に立てれば。
テーブル内では[@]
を使用できますが、(残念ながら)Excelは自動的にTable1[@]
に展開されますが、機能します。 (Excel 2010を使用しています)
たとえば、2つの列[Change]
と[Balance]
がある場合、これを[Balance]
列に入れます。
=OFFSET([@], -1, 0) + [Change]
もちろん、これは(他のほとんどのソリューションと同様に)行の順序に依存するため、少し壊れやすいことに注意してください。
編集:Cell( "width")は最後に変更されたセルの幅を返すため、以下は間違っています。
Cell("width")
は現在のセルの幅を返すため、現在のセルへの参照は不要です。ただし、必要な場合、cell("address")
は現在のセルのアドレスを返します。したがって、現在のセルへの参照が必要な場合は、indirect(cell("address"))
を使用します。ドキュメントを参照してください: http://www.techonthenet.com/Excel/formulas/cell.php