繁体   English   中英

将Excel中两个单元格中的文本合并为一个带有VBA的单元格

[英]Merge text from two cells in Excel into one with VBA

我从客户端收到了许多Excel文件。

他们的系统将数据提取到电子表格中,但是一栏有问题。 如果文本太长,它会将剩余的文本放入其下面的单元格中。

这会导致该行中的所有其他字段为空,除了溢出。

如何将所讨论的单元格合并到我收到的所有文件中?

我上传了该文件的屏幕截图作为示例。 在第8行注意到H8是唯一的单元格。 这需要与H7合并。 但并不是每一行都有问题。

在此输入图像描述

asuming A是主要的(和空双打)
asuming H持有文本
然后在L1复制下来

=H1&IF(LEN(A2),H2,"")

最简单的方法(然后将值从L复制到H并删除空行(只需使用过滤器)
当拥有未知行数(分裂后)时,你最好使用vba(或者只是重复整个过程直到没有空行...

在VBA中这样做:

Sub testing()
  Dim i As Long
  While Len(Cells(i + 1, 8))
    i = i + 1
    While Len(Cells(i + 1, 1)) = 0 And Len(Cells(i + 1, 8))
      Cells(i, 8) = Cells(i, 8) & Cells(i + 1, 8)
      Rows(i + 1).Delete
    Wend
  Wend
End Sub

大多数程序跳过空格,所以你可能想要使用:

=H1&IF(LEN(A2)," "&H2,"")

或者对于vba改变Cells(i, 8) = Cells(i, 8) & Cells(i + 1, 8)Cells(i, 8) = Cells(i, 8) & " " & Cells(i + 1, 8)

这将连接H中的文本并删除无用的行:

Sub test_bm11()
Dim wS As Worksheet, _
    LastRow As Long, _
    i As Long

Set wS = ActiveSheet
With wS
    LastRow = .Range("H" & .Rows.Count).End(xlUp).Row
    For i = LastRow To 2 Step -1
        If .Cells(i, "A") <> vbNullString Then
        Else
            .Cells(i, "H").Offset(-1, 0) = .Cells(i, "H").Offset(-1, 0) & .Cells(i, "H")
            .Cells(i, "H").EntireRow.Delete
        End If
    Next i
End With

End Sub

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM