VBA代码报错求助:修正判断A列前缀的IF公式语句
VBA代码错误修正
核心问题:公式字符串双引号未转义
原公式语句中,Excel公式里的字符串双引号在VBA中未正确转义,导致语法错误。VBA规定,字符串内部的双引号必须用两个连续双引号表示,否则会被解析为字符串结束标记。
修正后的目标语句
rng(i, 4).Formula = "=IF(LEFT(A" & (i + 4) & ",2)=""RN"",""RN"",IF(LEFT(A" & (i + 4) & ",2)=""EX"",""EX"",""""))"
额外关键错误修正
代码中存在行号计算错误:
rng被设置为Range("F5:F50000"),循环中i从1开始(对应F5行),因此公式中的行号应为i + 4(5-1=4),而非原代码的i + 1(会错误引用F2、J2等行)。
其他潜在问题修正
rng(i, 2).Formula原语句不完整,缺少闭合括号,需补充完整。rng初始为单列范围F5:F50000,但代码中使用rng(i,2)/rng(i,3)/rng(i,4)指向G/H/I列,若这是预期操作,建议将rng范围调整为Range("F5:I50000"),使代码逻辑更清晰。
完整修正后代码
Sub ITEM() Dim dat As Variant Dim rng As Range Dim i As Long Set rng = Range("F5:I50000") ' 调整为包含F-I列的范围,匹配代码中多列操作 dat = rng.Columns(1) ' 仅读取F列数据用于判断 For i = LBound(dat, 1) To UBound(dat, 1) If dat(i, 1) <> "" Then rng(i, 2).Formula = "=(F" & (i + 4) & ")" ' 正确引用当前行的F列单元格 rng(i, 3).Formula = "=VLOOKUP(J" & (i + 4) & ",A:B,2,0)" rng(i, 4).Formula = "=IF(LEFT(A" & (i + 4) & ",2)=""RN"",""RN"",IF(LEFT(A" & (i + 4) & ",2)=""EX"",""EX"",""""))" End If Next End Sub
内容的提问来源于stack exchange,提问作者Davey Brankaert
相关产品推荐
相关产品推荐

