【问题标题】:EXCEL - Macro to conditionally merge rows based on cell valueEXCEL - 根据单元格值有条件地合并行的宏
【发布时间】:2013-11-15 21:51:27
【问题描述】:

如果当前行的 Col C 的内容为空,我正在使用 VBA 宏,它将当前行的内容与前一行的内容合并

输入 上校 |上校 B |科尔C 文本1A |文本1B | 1 文本2A |文本2B | 文本3A |文本3B | 文本4A |文本4B | 2 文本5A |文本5B | 输出 上校 |上校 B |科尔C 文本1A 文本2A 文本3A | text1B text2B test3B | 1 text4A text5A |文本4B 文本5B | 2

有类似的问题,但我对 VBA 的了解太基础,无法将答案应用于此特定案例。谢谢!

【问题讨论】:

  • 代码块确实提高了可读性。代码前四个空格或用 ` 字符括起来。
  • 这在 vba 中是可行的,但是您描述的输出与上面显示的不同。请说清楚。另外,请展示您目前编写的代码,我们将从那里开始。
  • 为澄清起见,您是否尝试将所有内容折叠到一个单元格中,该单元格中没有 C 列中的内容到其上方最近的行中但 C 列中有内容?
  • @sbanders 我编辑了输出以反映我想要的。我尝试编辑 stackoverflow.com/questions/13353080/…> 提供的代码,但我知道几乎没有 VBA。

标签: vba excel merge


【解决方案1】:

我认为this question 将帮助您找到所需的解决方案。您的问题几乎是重复的问题。

Sub mergeCategoryValues()
Dim lngRow As Long

With ActiveSheet
    lngRow = .Cells(65536, 1).End(xlUp).Row
    .Cells(1).CurrentRegion.Sort key1:=.Cells(1), Header:=xlYes

    Do
        If .Cells(lngRow, 1) = .Cells(lngRow - 1, 1) Then
            .Cells(lngRow - 1, 3) = .Cells(lngRow - 1, 3) & "; " & .Cells(lngRow, 3)

            .Rows(lngRow).Delete
        End If

        lngRow = lngRow - 1
    Loop Until lngRow = 1
End With
End Sub

这段代码对我有用。答案发布在here中的问题上

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-11-02
    • 2018-03-30
    • 2022-11-07
    • 1970-01-01
    • 2014-04-27
    • 1970-01-01
    • 2021-04-22
    相关资源
    最近更新 更多