如何获取当前单元格的引用?
例如,如果我想显示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 引用样式 中也能实现相同的效果(另请参见 GSerg 对 Joey 的答案的评论 和 他对 Patrick McDonald 的回答的评论)。
干杯
:-)
在当前工作表中,选择单元格A1(这很重要!)
打开“名称管理器”(Ctrl + F3)
点击“新建…”
在“名称:”中输入“THIS_CELL”(或者只输入“THIS”,这是我的首选)
将以下公式输入到“引用:”中:
=!A1
注意:一定要选择单元格A1。此公式相对于活动单元格。
在“范围:”下选择“工作簿”。
点击“确定”并关闭“名称管理器”
=CELL("width",THIS_CELL)
编辑:使用INDIRECT()
的解决方案之外,还有一个更好的解决方案。
值得注意的是,我提供的解决方案应该优先于任何使用INDIRECT()
函数的解决方案,原因如下:
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)
例如,在具有两列[Change]
和[Balance]
的情况下,将以下内容放入[Balance]
列中:
=OFFSET([@], -1, 0) + [Change]
有一种更安全且不会拖慢应用程序的更好方法。 Excel的设置方式是,单元格可以具有值或公式; 公式不能引用其自身的单元格。 您最终会得到一个无限循环,因为新值将导致另一次计算...。使用辅助列基于您在其他单元格中输入的内容来计算值。例如:
列A是True或False,列B包含货币价值,列C包含以下公式: =B1
现在,要计算只有当列A为True并且列B大于零时才会在条件格式中将列B突出显示为黄色...
=AND(A1=True,C1>0)
然后,您可以选择隐藏列C。
=CELL("width", C)
来查询,其中C
基本上就是“当前列”(就像R
是“当前行”一样)。 - imix