Excel参考当前单元格

我如何获得对当前单元格的引用?

例如,如果我想显示列A的宽度,我可以使用以下内容:

=CELL("width", A2) 

但是,我想要公式是这样的:

 =CELL("width", THIS_CELL) 

创build一个名为THIS_CELL的命名公式

  1. 在当前工作表中,select单元格A1(这很重要!)
  2. 打开Name Manager (Ctl + F3)
  3. 点击New...
  4. input“THIS_CELL”(或只是“THIS”,这是我的首选项)到Name:
  5. input以下公式到Refers to:

    =!A1

    注意: 确保单元格A1被选中 。 这个公式是相对于ActiveCell的。

  6. Scope:selectWorkbook

  7. 单击OK并closuresName Manager

完全按照您的要求使用工作表中的公式

 =CELL("width",THIS_CELL) 

编辑:比使用INDIRECT()更好的解决scheme

值得注意的是我给出的解决scheme应该优于任何使用INDIRECT()函数的解决scheme,原因有二:

  1. 它是非易失性的,而INDIRECT()是一个易变的Excel函数,因此在大量使用时会显着减慢工作簿计算的速度。
  2. 它要简单得多,并且不需要将地址(以ROW() COLUMN() )转换为对地址的范围引用并再次返回范围引用。

编辑:另请参阅此问题有关工作簿范围,工作表相关的命名范围的更多信息。

编辑:另请参阅@ imix的答案下面的这个想法的变化(使用RC风格的引用)。 在这种情况下,您可以使用=!RC作为THIS_CELL命名的范围公式,或者直接使用RC

你可以使用

 =CELL("width", INDIRECT(ADDRESS(ROW(), COLUMN()))) 

几年来晚了:

为了完整性,我想给出另一个答案:

首先,转到Excel选项 – > 公式并启用R1C1引用 。 然后使用

  =CELL("width", RC) 

RC总是引用当前行,当前列,即“这个单元格”。

Rick Teachey的解决scheme基本上是在A1参考风格上做出相同的调整(另请参阅GSerg对Joey的回答的评论 ,并注意他对Patrick McDonald的回答的评论 )。

干杯
🙂

=ADDRESS(ROW(),COLUMN(),4)会给我们当前单元格的相对地址。 =INDIRECT(ADDRESS(ROW(),COLUMN()-1,4))将给我们当前单元格左边的单元格的内容给我们当前单元格上方单元格的内容(很适合计算运行总数)

使用CELL()函数返回有关被更改的最后一个单元格的信息。 因此,如果我们input一个新的行或列, 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会自动扩展到Table1[@]但是它可以工作。 (我正在使用Excel 2010)

例如,当有两栏[Change][Balance] ,将其放在[Balance]栏中:

 =OFFSET([@], -1, 0) + [Change] 

当然要注意,这取决于行的顺序(就像大多数其他解决scheme一样),所以它有点脆弱。

我发现处理这个(对我来说)最好的方法是使用以下内容:

 Dim MyString as String MyString = Application.ThisCell.Address Range(MyString).Select 

希望这可以帮助。

有一个更好的方法是更安全,不会减慢你的应用程序。 如何设置Excel,一个单元格可以有一个值或一个公式; 该公式不能引用它自己的单元格。 由于新值会导致另一个计算,所以最终会出现无限循环。 使用助手列来计算基于你放在其他单元格中的值。 例如:

列A是真或假,列B包含货币值,列C包含以下公式:= B1

现在,要计算列B将以条件格式高亮显示黄色,只有列A为真且列B大于零…

= AND(A1 = TRUE,C1> 0)

然后你可以select隐藏C列

编辑:以下是错误的,因为单元格(“宽度”)返回最后修改的单元格的宽度。

Cell("width")返回当前单元格的宽度,所以您不需要对当前单元格的引用。 如果你需要一个, cell("address")返回当前单元格的地址,所以如果你需要对当前单元格的引用,使用indirect(cell("address")) 。 请参阅文档: http : //www.techonthenet.com/excel/formulas/cell.php