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

当指定单元格非空时合并同行其他单元格的VBA实现问题

处理PDF转Excel后的姓名拆分异常问题

将PDF数据导入Excel解析时,使用Text to Columns功能按空格拆分数据,多数行可正常处理,但包含空格的姓名会导致拆分异常。需要添加VBA代码实现:遍历每行,若J列单元格非空,则合并该行其他单元格。

我参考了两段类似代码:

FixRows代码(统一行长度)

Sub FixRows()

    Dim i As Long
    
    For i = 1 To 20000 Step 1
        If Not IsEmpty(Range("Q" & i)) Then Range("B" & i & ":I" & i).Delete Shift:=xlToLeft
    Next i

End Sub

合并三单元格代码

Columns("D:D").Insert
Dim LastRow As Long
With Worksheets("Sheet1")
    LastRow = .Cells(.Rows.Count, "A").End(xlUp).Row
    With .Range("D1:D" & LastRow)
        .Formula = "=A1&"" ""&B1&"" ""&C1"
        .Value = .Value
    End With
End With
Columns("A:C").Delete

结合思路编写TestConcat代码时出现编译错误:Invalid Qualifier,错误出现在第二个i处:

报错的TestConcat代码

Sub TestConcat()

Dim i As Long

For i = 1 To 20000 Step 1
    If Not IsEmpty(Range("J" & i)) Then Range("A" & i).Formula = "A" & i & " " & "B" & i.Value = .Value
    Range("B" & i).Delete Shift:=xlToLeft
Next i
        
End Sub

修正后得到可用代码,需注意删除单元格逻辑避免误删整列:

修正后的TestConcat代码

Sub TestConcat()

Dim i As Long

For i = 1 To 20000 Step 1
    If Not IsEmpty(Range("J" & i)) Then Range("A" & i).Value = Range("A" & i).Value & Range("B" & i).Value
    If Not IsEmpty(Range("J" & i)) Then Range("B" & i).Delete Shift:=xlToLeft
Next i
        
End Sub

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 19:03:14