76

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

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

=CELL("width", A2)

但是,我希望公式是这样的:

=CELL("width", THIS_CELL)
4

13 回答 13

52

迟了几年:

为了完整起见,我想再给出一个答案:

首先,转到Excel-Options -> Formulas并启用R1C1 references。然后使用

  =CELL("width", RC)

RC总是指当前行、当前列,即“此单元格”。

Rick Teachey 的解决方案基本上是一个调整,以使A1 参考样式中的相同成为可能(另请参阅GSerg对 Joey 的回答的评论,并注意对 Patrick McDonald 的回答的评论)。

干杯
:-)

于 2014-08-13T16:38:24.343 回答
50

Create a named formula called THIS_CELL

  1. In the current worksheet, select cell A1 (this is important!)

  2. Open Name Manager (Ctl+F3)

  3. Click New...

  4. Enter "THIS_CELL" (or just "THIS", which is my preference) into Name:

  5. Enter the following formula into Refers to:

    =!A1

    NOTE: Be sure cell A1 is selected. This formula is relative to the ActiveCell.

  6. Under Scope: select Workbook.

  7. Click OK and close the Name Manager

Use the formula in the worksheet exactly as you wanted

=CELL("width",THIS_CELL)

EDIT: Better solution than using INDIRECT()

It's worth noting that the solution I've given should be preferred over any solution using the INDIRECT() function for two reasons:

  1. It is nonvolatile, while INDIRECT() is a volatile Excel function, and as a result will dramatically slow down workbook calculation when it is used a lot.
  2. It is much simpler, and does not require converting an address (in the form of ROW() COLUMN()) to a range reference to an address and back to a range reference again.

EDIT: Also see this question for more information on workbook-scoped, sheet dependent named ranges.

EDIT: Also see @imix's answer below for a variation on this idea (using RC style references). In that case, you could use =!RC for the THIS_CELL named range formula, or just use RC directly.

于 2014-03-08T02:54:11.687 回答
37

你可以使用

=CELL("width", INDIRECT(ADDRESS(ROW(), COLUMN())))
于 2009-04-16T18:27:39.947 回答
31

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

使用CELL()函数返回有关最后一个已更改单元格的信息。因此,如果我们输入新的行或列,CELL()引用将受到影响,并且不再是当前单元格的引用。

于 2012-04-11T11:43:42.540 回答
7

A2已经是相对引用,并且会在您移动单元格或复制公式时发生变化。

于 2009-04-16T18:23:46.010 回答
7
=ADDRESS(ROW(),COLUMN())
=ADDRESS(ROW(),COLUMN(),1)
=ADDRESS(ROW(),COLUMN(),2)
=ADDRESS(ROW(),COLUMN(),3)
=ADDRESS(ROW(),COLUMN(),4)
于 2013-12-28T14:22:52.983 回答
6

没有间接():=CELL("width", OFFSET($A$1,ROW()-1,COLUMN()-1) )

于 2014-07-02T14:01:33.857 回答
2

我发现(对我而言)处理此问题的最佳方法是使用以下内容:

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

希望这可以帮助。

于 2013-06-28T16:11:47.577 回答
1

在表格中,您可以使用[@](不幸的是)Excel 自动扩展到的表格,Table1[@]但它确实有效。(我使用的是 Excel 2010)

例如,当有两列时[Change][Balance]将其放入[Balance]列中:

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

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

于 2011-12-19T21:38:08.870 回答
1

有一种更好的方法更安全,不会减慢您的应用程序。Excel是如何设置的,一个单元格可以有一个值或一个公式;公式不能引用自己的单元格。你最终会出现一个无限循环,因为新值会导致另一个计算...... 使用辅助列根据您在另一个单元格中输入的内容计算值。例如:

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

现在,要计算只有当 A 列为真且 B 列大于零时,B 列才会以条件格式突出显示为黄色......

=AND(A1=真,C1>0)

然后您可以选择隐藏 C 列

于 2014-06-27T19:31:56.720 回答
1

完全归功于@rick-teachey 的最佳答案,但您可以扩展该方法以使用条件格式。为了使这个答案完整,我将以摘要形式复制 Rick 的答案,然后对其进行扩展:

  1. 在任何工作表中选择单元格A1
  2. 创建一个名为的命名范围THIS并将其设置Refers to:=!A1.

尝试THIS在条件格式公式中使用将导致错误:

You may not use references to other workbooks for Conditional Formatting criteria

如果您想THIS使用条件格式公式:

  1. 创建另一个名为的命名范围THIS_CF并将其设置Refers to:=THIS.

您现在可以使用THIS_CF来引用条件格式公式中的当前单元格。

您还可以使用此方法创建其他相关的命名范围,例如THIS_COLUMN, THIS_ROW, ROW_ABOVE,COLUMN_LEFT等。

于 2019-11-20T18:06:52.567 回答
0

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

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

于 2011-09-15T14:40:03.113 回答
0

引用包含此公式的单元格(自引用): address(row();column())

例如获取上面单元格的值: indirect(address(row()-1;column()))

或者OP问什么: =Cell(width;address(row();column()))

于 2021-07-12T16:13:39.677 回答