如何获得对当前单元格的引用?
例如,如果要显示列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