如何在带[]相对引用的FormulaR1C1中使用变量并解决语法错误
成因
- R1C1引用的语法规则要求:
[]包裹的相对偏移量只能是直接的整数值,不支持在括号内做算术运算。你当前的代码拼接完成后,公式里会出现RC[-1-2]这类带减号运算的非法引用格式(假设NofRanks赋值为2),Excel无法识别就会触发语法错误。 - 次要触发原因:如果变量
NofRanks未提前赋值、或变量类型不是整数,拼接出来的偏移量也会是非法格式,同样会触发语法报错。
解决方法
只需要在VBA层面先完成偏移量的算术计算,再把计算好的整数值拼入公式即可,有两种写法可选:
- 提前声明变量存储计算好的偏移量,可读性更高:
Dim offset1 As Integer, offset2 As Integer offset1 = -1 - NofRanks offset2 = -4 - NofRanks Selection.FormulaR1C1 = "=IF(RC[" & offset1 & "]>R4C3,RC[" & offset2 & "]/R2C3,0)"
- 直接在拼接位置计算,写法更简洁:
Selection.FormulaR1C1 = "=IF(RC[" & (-1 - NofRanks) & "]>R4C3,RC[" & (-4 - NofRanks) & "]/R2C3,0)"
两种写法最终生成的公式都会是RC[-3]这类符合规范的引用格式,不会再触发语法错误。
内容的提问来源于stack exchange,提问作者Mystical Devices
相关产品推荐
相关产品推荐

