如何获得对当前单元格的引用?
例如,如果要显示列A的宽度,可以使用以下内容:
=CELL("width", A2)
但是,我希望公式是这样的:
=CELL("width", THIS_CELL)
Answers:
在当前工作表中,选择单元格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()函数的任何解决方案都要优先,原因有两个:
INDIRECT()易失性的Excel函数,因此,经常使用它会大大减慢工作簿的计算速度。ROW() COLUMN())转换为对地址的范围引用,然后再转换回范围引用。编辑:有关工作簿范围的,依赖于工作表的命名范围的更多信息,请参见此问题。
编辑:另请参阅下面的@imix答案,以了解这种想法的变体(使用RC样式引用)。在这种情况下,你可以使用=!RC的THIS_CELL命名范围的公式,或者只是使用RC直接。
=CELL("width", C)其中C基本上是“当前列”(如R为“当前行”)。
你可以用
=CELL("width", INDIRECT(ADDRESS(ROW(), COLUMN())))
=ADDRESS(ROW(),COLUMN(),4) 将为我们提供当前单元格的相对地址。
=INDIRECT(ADDRESS(ROW(),COLUMN()-1,4))将为我们提供当前单元格左侧单元格=INDIRECT(ADDRESS(ROW()-1,COLUMN(),4))的内容,将为我们提供当前单元
格上方单元格的内容(用于计算运行总计)
使用CELL()函数可返回有关最后更改的单元格的信息。因此,如果我们输入新的行或列,则CELL()引用将受到影响,并且不再是当前单元格的引用。
没有INDIRECT(): =CELL("width", OFFSET($A$1,ROW()-1,COLUMN()-1) )
@ rick-teachey完全信任最重要的答案,但是您可以扩展该方法以使用条件格式。为了使这个答案完整,我将以摘要形式复制Rick的答案,然后扩展它:
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的宽度。
Cell("width")返回当前单元格的宽度,因此您无需引用当前单元格。但是,如果需要一个,则cell("address")返回当前单元格的地址,因此,如果需要引用当前单元格,请使用indirect(cell("address"))。请参阅文档:http : //www.techonthenet.com/excel/formulas/cell.php