如何实现Excel选中区域相对/绝对引用切换的宏功能?
Excel单元格引用类型切换宏实现方案
使用说明
- 打开需要操作的Excel文件,按
Alt + F11调出VBA编辑器 - 右键点击左侧工程资源管理器中的当前工作簿名称,选择「插入」-「模块」
- 将下方代码粘贴到模块窗口中,按
F5即可运行,也可以自定义快捷键绑定宏方便后续调用 - 运行后会弹出选择窗口,输入对应选项编号即可将选中区域的所有公式引用批量切换为对应类型
完整VBA代码
Sub 切换单元格引用类型() Dim rng As Range Dim cell As Range Dim selectOption As Integer ' 仅处理选中区域内的公式单元格 On Error Resume Next Set rng = Selection.SpecialCells(xlCellTypeFormulas) On Error GoTo 0 If rng Is Nothing Then MsgBox "选中区域没有包含公式的单元格,请重新选择", vbExclamation Exit Sub End If ' 弹出4种引用类型选择提示 selectOption = Val(InputBox("请选择要切换的引用类型,输入对应编号:" & vbCrLf & _ "1 - 绝对引用(例:$A$1)" & vbCrLf & _ "2 - 相对引用(例:A1)" & vbCrLf & _ "3 - 行绝对列相对(例:A$1)" & vbCrLf & _ "4 - 列绝对行相对(例:$A1)", "引用类型切换")) If selectOption < 1 Or selectOption > 4 Then MsgBox "输入无效,请输入1-4之间的数字", vbExclamation Exit Sub End If ' 批量切换引用类型 For Each cell In rng Select Case selectOption Case 1 cell.Formula = Application.ConvertFormula(cell.Formula, xlA1, xlA1, xlAbsolute) Case 2 cell.Formula = Application.ConvertFormula(cell.Formula, xlA1, xlA1, xlRelative) Case 3 cell.Formula = Application.ConvertFormula(cell.Formula, xlA1, xlA1, xlAbsRowRelColumn) Case 4 cell.Formula = Application.ConvertFormula(cell.Formula, xlA1, xlA1, xlRelRowAbsColumn) End Select Next cell MsgBox "引用类型切换完成", vbInformation End Sub
功能说明
- 无需手动录入工作簿、工作表名称,自动识别当前激活工作表的选中区域生效
- 仅修改含公式的单元格,不会影响普通数值单元格内容
- 完整覆盖Excel标准的4种单元格引用类型切换需求
内容的提问来源于stack exchange,提问作者R Lee
相关产品推荐
相关产品推荐

