You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VBA中FormulaR1C1的IF(AND)公式运行时错误1004排查求助

解决VBA FormulaR1C1的运行时错误1004问题

你的代码触发1004错误主要是公式语法和逻辑上的几个小问题,我帮你拆解并修正:

问题1:多余的右括号导致语法错误

第一个IF函数里,你写成了IF(RC[1]>180),后面多了个不必要的右括号,这直接破坏了公式的语法结构,是触发错误的核心原因。

问题2:AND条件逻辑不严谨

第二个AND判断里RC[1]=180只会匹配刚好等于180的数值,但你想要的应该是**90到180之间(包含180)**的分组,所以应该改成RC[1]<=180。

问题3:缺少最终的Else分支

最后一个IF没有处理超出范围的情况(比如负数),虽然你的数据可能都是非负的,但加上Else分支能避免出现#N/A错误,让代码更健壮。


修正后的代码

Range("B2").FormulaR1C1 = "=IF(RC[1]>180,""180+Days"",IF(AND(RC[1]>90,RC[1]<=180),""091-180 days"",IF(AND(RC[1]>60,RC[1]<=90),""061-090 days"",IF(AND(RC[1]>30,RC[1]<=60),""031-060 days"",IF(AND(RC[1]>=0,RC[1]<=30),""000-030 Days"","""")))))"

如果需要批量填充B列到C列最后一行数据的位置,可以用这段更高效的代码:

Dim lastRow As Long
lastRow = Cells(Rows.Count, "C").End(xlUp).Row ' 获取C列最后一行有数据的行号
Range("B2:B" & lastRow).FormulaR1C1 = "=IF(RC[1]>180,""180+Days"",IF(AND(RC[1]>90,RC[1]<=180),""091-180 days"",IF(AND(RC[1]>60,RC[1]<=90),""061-090 days"",IF(AND(RC[1]>30,RC[1]<=60),""031-060 days"",IF(AND(RC[1]>=0,RC[1]<=30),""000-030 Days"","""")))))"

内容的提问来源于stack exchange,提问作者user2709844

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 08:59:41