如何获得对当前单元格的引用?
例如,如果要显示列 A 的宽度,可以使用以下方法:
=CELL("width", A2)
然而,我希望公式是这样的:
=CELL("width", THIS_CELL)
A2已经是一个相对引用,在移动单元格或复制公式时将发生更改。
A2
你可以用
=CELL("width", INDIRECT(ADDRESS(ROW(), COLUMN())))
编辑: 下面是错误的,因为单元格(“宽度”)返回 最后修饰的细胞的宽度。
Cell("width")返回当前单元格的宽度,因此不需要对当前单元格的引用。但是,如果需要一个单元格,则 cell("address")返回当前单元格的地址,因此,如果需要对当前单元格的引用,则使用 indirect(cell("address"))。请参阅文档: http://www.techonthenet.com/excel/formulas/cell.php
Cell("width")
cell("address")
indirect(cell("address"))
在表内部,你可以使用 [@](不幸的是) Excel 自动扩展到 Table1[@],但它确实工作。(我正在使用 Excel2010)
[@]
Table1[@]
例如,当有两列 [Change]和 [Balance]时,将其放在 [Balance]列中:
[Change]
[Balance]
=OFFSET([@], -1, 0) + [Change]
当然要注意,这取决于行的顺序(就像大多数其他解决方案一样) ,因此有点脆弱。
=ADDRESS(ROW(),COLUMN(),4)将提供当前单元的相对地址。 =INDIRECT(ADDRESS(ROW(),COLUMN()-1,4))将提供当前单元格左侧单元格的内容 =INDIRECT(ADDRESS(ROW()-1,COLUMN(),4))将为我们提供当前单元格上方单元格的内容(非常适合计算运行总数)
=ADDRESS(ROW(),COLUMN(),4)
=INDIRECT(ADDRESS(ROW(),COLUMN()-1,4))
=INDIRECT(ADDRESS(ROW()-1,COLUMN(),4))
使用 CELL ()函数返回有关上次更改的单元格的信息。因此,如果我们输入一个新的行或列,CELL ()引用将受到影响,不再是当前单元格的引用。
我发现(对我来说)处理这个问题的最好方法是使用以下方法:
Dim MyString as String MyString = Application.ThisCell.Address Range(MyString).Select
希望这个能帮上忙。
=ADDRESS(ROW(),COLUMN()) =ADDRESS(ROW(),COLUMN(),1) =ADDRESS(ROW(),COLUMN(),2) =ADDRESS(ROW(),COLUMN(),3) =ADDRESS(ROW(),COLUMN(),4)
在当前工作表中,选择单元格 A1(这很重要!)
打开 Name Manager(Ctl + F3)
Name Manager
按 New...
New...
在 Name:中输入“ THIS _ CELL”(或者只输入“ THIS”,这是我的首选)
Name:
在 Refers to:中输入以下公式
Refers to:
=!A1
注意: 确保选择了单元格 A1。此公式是相对于 ActiveCell 的。
在 Scope:下选择 Workbook。
Scope:
Workbook
单击 OK并关闭 Name Manager
OK
=CELL("width",THIS_CELL)
编辑: 比使用 INDIRECT()更好的解决方案
INDIRECT()
值得注意的是,我给出的解决方案应该优先于使用 INDIRECT()函数的任何解决方案,原因有二:
ROW()
COLUMN()
编辑: 另请参阅 这个问题以获得更多关于工作簿范围的、与工作表相关的命名范围的信息。
编辑: 也请参阅下面的 @ imix 的回答了解这个想法的变体(使用 RC 风格参考)。在这种情况下,您可以使用 =!RC作为 THIS_CELL命名范围公式,或者直接使用 RC。
=!RC
THIS_CELL
RC
有一种更好的方法更安全,而且不会降低应用程序的速度。如何设置 Excel,则单元格可以具有值或公式; 公式不能引用自己的单元格。最终得到的是一个无限循环,因为新值将导致另一次计算... ..。使用帮助器列根据放在另一个单元格中的内容计算值。例如:
列 A 是真或假,列 B 包含货币值,列 C 包含以下公式: = B1
现在,要计算只有当列 A 为 True 且列 B 大于0时,列 B 才会以条件格式突出显示为黄色..。
= AND (A1 = True,C1 > 0)
然后可以选择隐藏 C 列
没有间接() : =CELL("width", OFFSET($A$1,ROW()-1,COLUMN()-1) )
=CELL("width", OFFSET($A$1,ROW()-1,COLUMN()-1) )
几年后:
为了完整起见,我想给出另一个答案:
首先,转到 Excel-选项-> 配方并启用 R1C1参考文献,然后使用
=CELL("width", RC)
RC始终引用当前的 Row,current Column,即“ this cell”。
里克 · 蒂奇的解决方案 基本上是一个调整,使同样的可能在 A1参考风格(也见 GSerg 的评论乔伊的答案和注意 他的评论麦当劳帕特里克的答案)。
干杯 :-)
完全归功于@rick-each 的最佳答案,但是您可以将这种方法扩展到使用条件格式。为了使这个答案完整,我将以摘要的形式复制里克的答案,然后扩展它:
A1
THIS
尝试在条件格式公式中使用 THIS将导致错误:
You may not use references to other workbooks for Conditional Formatting criteria
如果希望 THIS在条件格式公式中工作:
THIS_CF
=THIS
现在可以使用 THIS_CF引用“条件格式”公式中的当前单元格。
您还可以使用此方法创建其他相对命名范围,如 THIS_COLUMN、 THIS_ROW、 ROW_ABOVE、 COLUMN_LEFT等。
THIS_COLUMN
THIS_ROW
ROW_ABOVE
COLUMN_LEFT
对包含此公式的单元格的引用(自引用) : 地址(row () ; column ())
例如,得到上面单元格的值: 间接地址(address (row ()-1; column ()))
或者是观察员问的: = 单元格(宽度; 地址(行() ; 列()))