用于合并 Excel 中与其他列中的信息匹配的行的单元格的宏
Posted
技术标签:
【中文标题】用于合并 Excel 中与其他列中的信息匹配的行的单元格的宏【英文标题】:Macro to merge cells in Excel for rows in which information in other columns matches 【发布时间】:2013-12-31 01:57:52 【问题描述】:我是一名编程新手。小时候,我通过查看网站上的源代码并使用它来自学 html 和 CSS,直到我弄清楚它为什么起作用,但我真的没有任何其他类型的编码经验。但是,我能从能够看到执行我正在尝试做的事情的代码并剖析它(以及来自善良和博学的人的解释总是有帮助的)中学到最好的东西。
我很确定我可以使用 Excel 宏来做某事,但我不知道如何完成它。 (我认为宏是正确的选择,因为它不是一次性的,它是我必须定期应用的东西。我的问题与这个非常相似:Macro for merging cells
但是,我的目标稍微复杂一些。我想做同样的事情,只检查是否有多个相同的单元格。因此,本质上,如果 A、B、C、D、E、F 和 O 列中的多行相同...那么只有这样,我才想合并 P 列中这些行的单元格。
我想从这个开始:
对此:
就像我说的,我对 VBA 知之甚少。我尝试了对我来说似乎合乎逻辑的方法,即从链接的帖子中获取答案中的代码,但复制“lastRow = [B2].End(xlDown).Row”位以应用于我需要检查的每一列。对于那些知道自己在做什么的人来说,我确信这是显而易见的原因,但那没有用。
关于如何编辑此代码以完成我想要做的事情的任何提示,或者一个愿意编写它以便我可以阅读和反向工程的好心人?如果我所说的任何内容不清楚,请告诉我,我非常感谢任何可以提供帮助的人。
【问题讨论】:
【参考方案1】:应该很容易...
打开你的文件并点击 ALT+F11 打开 VBE。右键单击 VBA 项目窗口中的任意位置并插入 module
(*标准模块,not 类,not 用户窗体)
复制粘贴下面的代码
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 运行宏,它应该为你合并单元格
记住条件是行必须以垂直顺序彼此相邻。
运行宏之前
之后
【讨论】:
非常感谢!这段代码对我来说比我链接的代码更符合逻辑,并且完成了我需要它做的事情。【参考方案2】:更好的答案,请给我信用,这将合并单元格以创建一个“框”或您希望对合并单元格进行的任何其他操作。
热键是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
【讨论】:
以上是关于用于合并 Excel 中与其他列中的信息匹配的行的单元格的宏的主要内容,如果未能解决你的问题,请参考以下文章