如何在Excel中创建可跳转至其他工作表列末尾查找值的超链接?
实现点击公式单元格跳转到对应工作表目标位置的两种方案
方案1:无代码实现(无需启用宏,推荐)
直接将你原有公式嵌套入HYPERLINK函数即可,修改后公式如下:
=HYPERLINK("#'"&B3&"'!G"&MATCH(9.99999999999999E+307,INDIRECT("'"&B3&"'!G:G")),LOOKUP(9.99999999999999E+307,INDIRECT("'"&B3&"'!G:G")))
规则说明:
#是Excel超链接指向本工作簿内部位置的固定前缀MATCH(9.99999999999999E+307,INDIRECT("'"&B3&"'!G:G"))用于计算目标工作表G列最后一个数值对应的行号- 单元格显示内容和原LOOKUP公式结果完全一致,不会改变原有展示效果
- 点击单元格即可直接跳转到对应工作表G列的最后一个数值单元格,和
Ctrl+[跳转效果完全一致 - 如需适配其他列,只需把公式内两处
G:G和一处G替换为对应列标识即可,保留单引号可兼容带特殊字符的工作表名称
方案2:VBA实现(适合不想修改原有公式的场景)
如果不需要改动现有计算逻辑,可通过工作表事件实现自动跳转:
- 按
Alt+F11打开VBA编辑器,在左侧工程窗口双击你的主工作表名称 - 粘贴如下代码:
Private Sub Worksheet_SelectionChange(ByVal Target As Range) ' 仅处理单个单元格选中的场景 If Target.CountLarge > 1 Then Exit Sub ' 匹配你现有公式的特征,可根据实际公式结构调整匹配规则 If Target.HasFormula And InStr(Target.Formula, "LOOKUP(9.99999999999999E+307,INDIRECT") > 0 Then Dim sheetName As String, targetCol As String sheetName = Range("B3").Value targetCol = "G" ' 计算目标列最后一个非空行号 Dim lastRow As Long lastRow = Sheets(sheetName).Cells(Rows.Count, targetCol).End(xlUp).Row ' 执行跳转 ThisWorkbook.Sheets(sheetName).Activate Sheets(sheetName).Cells(lastRow, targetCol).Select End If End Sub
- 将文件保存为
xlsm启用宏格式即可,后续选中对应公式单元格会自动完成跳转。
内容的提问来源于stack exchange,提问作者Ashraful Alam
相关产品推荐
相关产品推荐

