VBA无需循环拼接B、D两列到J列 运行报13错误如何解决
VBA逐行拼接两列内容写入目标列的无循环实现方案
报错原因
直接对整列区域使用&运算符做字符串拼接时,多单元格区域的.Value属性返回值是二维数组,VBA不支持直接对整个数组执行字符串拼接运算,因此触发运行时错误"13":类型不匹配。
实现代码
不需要编写逐行遍历的循环语句,有两种成熟的实现方式:
- 方式1:写入公式后转静态值
With 你的目标工作表 ' 请替换为实际的工作表对象,例如 Sheets("数据表") ' 向J列逐行写入拼接公式,自动匹配同行B列、D列内容 .Range("J:J").Formula = "=B:B&D:D" ' 将公式计算结果转为固定文本值,避免后续B、D列变动时J列自动更新 .Range("J:J").Value = .Range("J:J").Value End With
- 方式2:用Evaluate直接计算结果(无公式残留)
With 你的目标工作表 ' 直接通过工作表计算引擎得到拼接结果,写入J列全程不产生临时公式 .Range("J:J").Value = .Evaluate("=B:B&D:D") End With
优化提示:如果你的数据没有占满整列,建议将代码中的整列范围
B:B/D:D/J:J替换为实际使用的数据区间,例如B2:B2000,可以大幅降低计算开销,提升运行速度。两种方案的拼接效果和需求完全一致,比如B列值为6L2AAB、D列值为E3时,J列对应行返回结果为6L2AABE3。
内容的提问来源于stack exchange,提问作者Jia Hannah
相关产品推荐
相关产品推荐

