Excel VBA写入FILTER公式自动加@仅返回单行,如何解决?
@符号自动添加的原因
你通过VBA的FormulaR1C1属性写入公式时,Excel会默认启用旧版公式的兼容逻辑,对于可返回多结果的动态数组公式,会自动添加@隐式交叉运算符,强制仅返回单个值,这就是你仅能得到第一行结果的原因。手动输入公式时Excel会自动识别溢出场景,不会触发该兼容逻辑。
解决方法
直接将代码中的FormulaR1C1替换为Formula2R1C1即可。Formula2是微软为适配动态数组公式推出的专用属性,写入时不会自动添加@运算符,公式可正常溢出填充全部结果。
修改后的完整代码如下:
Sub JoinCommon() Dim sInput: Set sInput = Workbooks("VGadjustment.xlsm").Sheets("inputs") Dim n: Let n = sInput.Cells(5, 8).Value Dim cVGR: Set cVGR = Workbooks("VGadjustment.xlsm").Sheets("CleanVGRevenue") Dim nVGR: Let nVGR = cVGR.Cells(1, 3).Value cVGR.Cells(9, 5).Formula2R1C1 = "=UNIQUE(FILTER(inputs!R8C7:R" & n + 7 & "C7,COUNTIF(CleanVGRevenue!R9C2:R" & nVGR + 8 & "C2,inputs!R8C7:R" & n + 7 & "C7)))" End Sub
内容的提问来源于stack exchange,提问作者Dylan Sinclair
相关产品推荐
相关产品推荐

