VBA写入TEXTJOIN公式报编译错误 缺少语句结束 求助代码修正
报错原因
VBA语法规定,字符串常量内部的双引号必须用连续两个双引号转义,否则编辑器会将字符串内部的双引号识别为字符串的结束标记,后续内容会被判定为非法代码。你代码里公式字符串中的双引号没有做转义,编辑器读到";"位置时已经认为前面的公式字符串结束了,自然会报「Expected: end of statement」编译错误。
另外你原代码的填充范围存在逻辑错误:填充起始单元格是H2,结束单元格却写的是A列对应行,会导致填充范围错位。
修正后可直接运行的代码
Sub xyz() ' 公式内所有双引号均做转义处理 Range("H2").Formula = "=TEXTJOIN("";"",TRUE,FILTERXML(""<t><s>""&SUBSTITUTE(SUBSTITUTE(A2,""/"",""</s><s>""),"";"",""</s><s>"")&""</s></t>"",""//s[not(contains(., '.'))]""))" ' 修正填充列范围为H列 Range("H2", "H" & Cells(Rows.Count, 1).End(xlUp).Row).FillDown End Sub
修正要点
- 所有公式内部的双引号全部替换为两个连续双引号,完成VBA字符串转义:例如公式里的参数分隔符
";"转义后写为"";"",XML标签片段"<t><s>"转义后写为""<t><s>"" - 修正填充范围的列标:将原代码中结束单元格的列标从
"A"改为"H",确保公式沿H列向下填充到A列最后一条数据对应的行 - 若你使用的是英文区域版本的Excel,需要将公式内的参数分隔符从分号
;替换为逗号,,否则会报公式错误
提示:TEXTJOIN和FILTERXML函数仅在Excel 2019、Office 365及以上版本中支持,低版本Excel运行会提示函数不存在。
内容的提问来源于stack exchange,提问作者Lote_marsk_chozey
相关产品推荐
相关产品推荐

