返回当前(活动)单元格地址的Excel公式

问题描述 投票:0回答:4

我正在尝试编写一个 Excel 公式(请不要使用 VBA)来返回活动单元格的地址,即光标当前所在的单元格。例如,我在单元格 A5 中有一个查找函数,它引用具有 3 行和 2 列的查找表,并且我需要一个公式为

=vlookup(activecell, A1:B3, 2, 0)
,这样当我单击单元格 A2 时,就会出现查找公式单元格 A5 中将显示单元格 B2 的内容。我似乎想不出我应该用什么来表示“activecell”。我尝试过间接组合
row()
address(row(), column())
,但我无法获得神奇的组合。预先感谢您的帮助!

excel
4个回答
2
投票

手动(F9)或自动获取当前选定的单元格地址 https://excel.tips.net/T002302_Displaying_the_Selected_Cells_Address.html

艾伦怀亚特

Excel 允许您通过检查公式栏左侧的名称框的内容来轻松查看当前选定单元格的位置。这很好,但有时您希望单元格的地址实际上位于单元格中。例如,您可能希望单元格 A1 包含当前选定单元格的地址。这意味着如果选择单元格 E4,则 A1 将包含其地址,即 $E$4。如果您随后按下右箭头键,则 A1 的内容将更改为 $F$4。

为了返回当前选定单元格的地址,您必须求助于使用宏。以下宏将返回运行时所选单元格的值:

Public Function CurrentCell() As String
    Application.Volatile
    CurrentCell = ActiveCell.Address
End Function

包含Application.Volatile方法意味着每次重新计算工作表时,都会再次运行该函数(宏)。要使用宏,您可以将以下内容放置在任何所需的单元格中,包括 A1:

=CurrentCell
您应该注意,每次移动到不同的单元格时,该宏都不会导致 A1 的内容发生变化。同样,只有在重新计算工作簿时(通过更改工作表中的某些内容或按 F9),A1 的内容才会更改。

如果您需要一个“实时”版本,当所选单元格发生更改时自动更新 A1,您可以按照以下步骤操作:

按 Alt+F11 显示 VBA 编辑器。 在“项目”窗口中编辑器左侧,双击您正在使用的工作表的名称。 (您可能需要首先打开 VBAProject 文件夹,然后打开其下的 Microsoft Excel Objects 文件夹。) 在工作表的代码窗口中,单击对象下拉列表并选择工作表。当您这样做时,过程应更改为

SelectionChange
,并且事件处理程序的框架应出现在代码窗口中。 更改事件处理程序,使其显示如下:

Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
    Range("A1").Value = ActiveCell.Address
End Sub

关闭 VBA 编辑器。 现在,当您在这张纸上移动时,A1 的内容应该不断更新以反映您的位置。


0
投票

我认为没有任何 Excel 函数/公式可以按照您期望的方式给出活动单元格的地址。

但是,有一个解决方法,您需要尝试一下。

尝试编写一个事件宏,它将获取单击的单元格(当前单元格)的地址,然后用该地址更新特定单元格。然后,您的公式可以从该特定单元格中获取粘贴的地址并在公式中使用它。

尝试一下,应该有效。


0
投票

谢谢拉杰什。是的,这应该可行,但我一直在寻找一个不需要 VBA 的公式,但显然不存在。我能得到的最接近的是 =INDIRECT(CELL("ADDRESS")) 但它不会自动刷新;它需要按 F9 或其他导致重新计算的操作。可惜 MS 没有包含 =ACTIVECELL() 这样的简单函数。


0
投票

这对我有用,试试吧。

Sub Solution()
    Dim Here As String
    Here$ = ActiveCell.Address
    ' works from cell b19 to B699
    If Here$ <= Range("B18").Address Or Here$ >= Range("B700").Address Then
        Range("A3") = "No"
    Else
        Range("A3") = Here$
    End If
End Sub
© www.soinside.com 2019 - 2024. All rights reserved.