如何获取对当前单元格的引用?
例如,如果我想显示 A 列的宽度,我可以使用以下内容:
=CELL("width", A2)
但是,我希望公式是这样的:
=CELL("width", THIS_CELL)
如何获取对当前单元格的引用?
例如,如果我想显示 A 列的宽度,我可以使用以下内容:
=CELL("width", A2)
但是,我希望公式是这样的:
=CELL("width", THIS_CELL)
迟了几年:
为了完整起见,我想再给出一个答案:
首先,转到Excel-Options -> Formulas并启用R1C1 references。然后使用
=CELL("width", RC)
RC总是指当前行、当前列,即“此单元格”。
Rick Teachey 的解决方案基本上是一个调整,以使A1 参考样式中的相同成为可能(另请参阅GSerg对 Joey 的回答的评论,并注意他对 Patrick McDonald 的回答的评论)。
干杯
:-)
In the current worksheet, select cell A1 (this is important!)
Open Name Manager (Ctl+F3)
Click New...
Enter "THIS_CELL" (or just "THIS", which is my preference) into Name:
Enter the following formula into Refers to:
=!A1
NOTE: Be sure cell A1 is selected. This formula is relative to the ActiveCell.
Under Scope: select Workbook.
Click OK and close the Name Manager
=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:
INDIRECT() is a volatile Excel function, and as a result will dramatically slow down workbook calculation when it is used a lot.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.
你可以使用
=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)
没有间接():=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 列为真且 B 列大于零时,B 列才会以条件格式突出显示为黄色......
=AND(A1=真,C1>0)
然后您可以选择隐藏 C 列
完全归功于@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("width")返回当前单元格的宽度,因此您不需要对当前单元格的引用。但是,如果您需要一个,cell("address")则返回当前单元格的地址,因此如果您需要对当前单元格的引用,请使用indirect(cell("address")). 请参阅文档:http ://www.techonthenet.com/excel/formulas/cell.php
引用包含此公式的单元格(自引用): address(row();column())
例如获取上面单元格的值: indirect(address(row()-1;column()))
或者OP问什么: =Cell(width;address(row();column()))