用于合并Excel中的单元格以用于其他列中的信息匹配的行的宏

mus*_*lid 2 excel merge vba excel-vba

我是编程新手.我小时候通过查看网站上的源代码并使用它来学习HTML和CSS,直到我弄清楚它为什么有效,但我对其他任何类型的编码都没有经验.但是,我从能够看到能够完成我正在尝试做的事情的代码中学到最好的东西,并将其解剖(来自善良和学识渊博的人的解释总是有帮助).

我的情况是,我很确定我可以使用Excel宏来做某事,我只是不知道如何实现它.(我认为宏是正确的选择,因为它不是一次性的,这是我必须定期应用的.我的问题非常类似于这个:用于合并单元格的宏

但是,我的目标稍微复杂一些.我想做同样的事情,只检查是否有多个相同的单元格.基本上,如果列A,B,C,D,E,F和O中的多行相同...那么只有那时,我想合并列P中那些行的单元格.

我想离开这个: 在此输入图像描述

对此: 在此输入图像描述

就像我说的,我对VBA知之甚少.我尝试了对我来说似乎合乎逻辑的东西,它是从链接的帖子中获取答案中的代码,但是复制了"lastRow = [B2] .End(xlDown).Row"位以应用于我需要检查的每一列.对于那些知道自己在做什么的人来说,我确信这是显而易见的理由.

有关如何编辑此代码以完成我想要做的任何提示,或者是一个愿意写它的善良的灵魂所以我可以做一些阅读并向后设计它吗?如果我说的话不清楚,请告诉我,我真的很感激任何可以提供帮助的人.

小智 7

应该很容易......

打开你的文件,然后按ALT+ F11打开VBE.右键单击VBA项目窗口中的任意位置并插入module(*标准模块,而不是类,而不是用户表单)

复制粘贴下面的代码

Sub Main()

    Dim i As Long
    Dim j As Long

    Dim sameRows As Boolean
    sameRows = True

    For i = 1 To Range("A" & Rows.Count).End(xlUp).Row
        For j = 1 To 7
            If StrComp(Cells(i, j), Cells(i + 1, j), vbTextCompare) Then
                sameRows = False
            End If
        Next j

        If sameRows Then
            Range(Cells(i, 8), Cells(i + 1, 8)).Merge
        End If

        sameRows = True
    Next i

End Sub
Run Code Online (Sandbox Code Playgroud)

点击F5运行宏,应该为你合并单元格

记住条件是行必须在垂直序列中彼此相邻.

在运行宏之前

在此输入图像描述

之后

在此输入图像描述