macros将Excel中的单元格合并到其他列中的信息匹配的行中

我是编程新手。 我从小的时候就开始学习HTML和CSS,通过查看网站上的源代码并加以解决,直到我明白了为什么它能够工作,但是我没有真正使用过任何其他types的编码。 但是,我能从看到的代码中学到最好的东西,并且对它进行parsing(并且从善良和学习的人解释总是有帮助的)。

我正处于一个我非常确定可以使用Excelmacros来做什么的情况,我只是不知道如何完成它。 (我认为macros是正确的select,因为它不是一次性的,这是我必须定期应用的。我的问题与这个非常相似: 用于合并单元格的macros

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

我想从这里走: 在这里输入图像说明

对此: 在这里输入图像说明

就像我说的,我对VBA知之甚less。 我试着对我来说是合乎逻辑的,这是从链接的post中得到答案的代码,但复制“lastRow = [B2] .End(xlDown).Row”位以应用于我需要检查的每一列。 对于我所知道的明显的原因,对于知道自己在做什么的人来说,这是行不通的。

如何编辑此代码来完成我想要做的任何提示,或者是一个愿意编写它的善良的灵魂,所以我可以做一些阅读和向后工程呢? 请让我知道,如果我所说的任何事情都不清楚,我真的很感激任何人可以帮助。

应该很容易…

打开你的文件,并按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 

命中F5来运行macros,这应该合并你的细胞

记住条件是行必须以垂直顺序彼此相邻。

在运行macros之前

在这里输入图像说明

之后

在这里输入图像说明

更好的答案,请给我信用,这将合并单元格创build一个“盒子”或任何其他你想要做的合并单元格。

热键是Control+M

开始代码:

 Sub Mergethecells() ' ' Mergethecells Macro ' merge cells ' ' Keyboard Shortcut: Ctrl+m ' With Selection .HorizontalAlignment = xlGeneral .VerticalAlignment = xlBottom .WrapText = False .Orientation = 0 .AddIndent = False .IndentLevel = 0 .ShrinkToFit = False .ReadingOrder = xlContext .MergeCells = True End With End Sub