Excel宏运行正常但无法查看单元格计算的公式格式求助
解决Excel宏中单元格公式显示为A1格式的问题
嘿,我完全get到你的需求了!你的RCinput宏运行正常,但现在单元格里的公式是R1C1格式(比如R[6]C[2]+R[0]C[1]这类),而你希望它显示成我们日常更熟悉的A1引用格式,比如$B$6+A6对吧?这问题其实很好解决,大概率是你的宏用了R1C1模式写入公式,或者Excel的引用设置没调整到位,下面给你几个针对性的解决方案:
一、直接改用A1模式写入公式
如果你的宏里是用FormulaR1C1属性来写入公式的,直接换成Formula属性就行,这个属性默认就是用A1格式的引用。举个简单例子:
' 原来的R1C1写法 Cells(a, b).FormulaR1C1 = "R[-6]C[0]+R[0]C[-1]" ' 改成A1写法(根据你的实际需求调整公式内容) Cells(a, b).Formula = "$B$6+A6"
二、动态转换R1C1公式为A1格式
如果你的宏是动态生成R1C1格式的公式(比如根据输入的行列号计算引用),不用手动硬改,用Excel自带的ConvertFormula函数就能一键转换:
Sub RCinput() Dim a As Long Dim b As Long Dim r1c1Formula As String Dim a1Formula As String ' 先设置Excel默认引用为A1模式,避免全局设置影响 Application.ReferenceStyle = xlA1 a = InputBox("What is the row number: ") b = InputBox("What is the column number: ") ' 这里是你原本宏里生成的R1C1格式公式示例 r1c1Formula = "R[6]C[2]+R[0]C[1]" ' 转换为A1格式 a1Formula = Application.ConvertFormula( _ Formula:=r1c1Formula, _ FromReferenceStyle:=xlR1C1, _ ToReferenceStyle:=xlA1) ' 把转换后的A1公式写入目标单元格 Cells(a, b).Formula = a1Formula End Sub
三、动态生成A1格式的引用
如果你的宏需要根据输入的行列号动态生成绝对/相对引用,用Cells(row, col).Address方法可以精准控制引用类型:
Cells(6, 2).Address(True, True)→ 返回绝对引用$B$6Cells(a, b-1).Address(False, False)→ 返回相对引用(比如A6,当b=2时)
举个贴合你需求的完整示例:
Sub RCinput() Dim a As Long Dim b As Long Dim targetFormula As String ' 强制设置为A1引用模式 Application.ReferenceStyle = xlA1 a = InputBox("What is the row number: ") b = InputBox("What is the column number: ") ' 动态生成你要的$B$6+A6格式公式 ' 这里假设A6是目标单元格左侧的单元格,你可以根据实际逻辑调整 targetFormula = Cells(6, 2).Address(True, True) & "+" & Cells(a, b-1).Address(False, False) ' 写入公式到指定单元格 Cells(a, b).Formula = targetFormula ' 如果你想直接让单元格显示公式而不是计算结果,加下面这行 ' Cells(a, b).ShowFormula = True End Sub
另外,如果你只是临时想在Excel界面查看公式,按`Ctrl+``(键盘左上角的波浪键)就能快速切换显示公式和计算结果,但上面的方法是从根源上让宏写入的就是A1格式的公式,更符合你的需求。
内容的提问来源于stack exchange,提问作者faisal s. ahmed
相关产品推荐
相关产品推荐

