将 B 列的行与已合并的行 A 的计数合并
Posted
技术标签:
【中文标题】将 B 列的行与已合并的行 A 的计数合并【英文标题】:Merging Rows of column B with the count of already merged rows A 【发布时间】:2016-10-10 11:31:22 【问题描述】:我想将一行中的单元格(属于 B 列)与已合并的不同单元格(属于 A 列)的计数合并。我该如何开始编码?
这是我想要的截图
【问题讨论】:
你试过什么?首先使用宏记录器手动执行此操作。然后看看代码和remove the.Select
,你应该开始到达那里。至于计算合并单元格的数量,您需要查找various ways 来完成。
欢迎来到 SO。请阅读[如何提问](***.com/help/how-to-ask),在这里获得最有效的帮助。因为这是你的第一天,我不想让你气馁,我通过提供一些示例和相关代码来帮助你开始。请理解 SO 不是我服务的代码。你必须研究你的主题。如果您在 SO 的 Questions 部分中输入搜索词 ~[excel-vba] Merge Cells~,则有 721 个结果,其中包含丰富的信息,涵盖各种情况。希望大家努力,成为重要的贡献者。
感谢您的建议。问其他问题我会注意的。
【参考方案1】:
-
合并电子表格中的单元格意味着获取两个或更多单元格并
用它们构建一个单元格。当你合并两个或更多
相邻的水平或垂直单元格,单元格变大
跨多列或多行显示的单元格。当你
合并多个单元格,只有一个单元格的内容(左上角
单元格用于从左到右的语言,或右上角的单元格用于
从右到左的语言)出现在合并的单元格中。的内容
您合并的其他单元格将被删除。更多详情请
浏览这篇 MSDN 文章Merge and unmerge
cells
用于合并单元格的简单 VBA 代码
Sub merg_exp_1()
ActiveSheet.Range("A1:C10").Merge
End Sub
显示了运行程序之前和之后的示例数据。
现在让我们看看,如果我们合并一行会发生什么。示例代码 锻炼虽然一般只针对一种情况进行测试,并且 如下:
Sub Merge_Rows()
Dim rng As Range
Dim rrow As Range
Dim rCL As Range
Dim out As String
Dim dlmt As String
dlmt = ","
Set rng = ActiveSheet.Range("A1:C5")
For Each rrow In rng.Rows
out = ""
For Each rCL In rrow.Cells
If rCL.Value <> "" Then
out = out & rCL.Value & dlmt
End If
Next rCL
Application.DisplayAlerts = False
rrow.Merge
Application.DisplayAlerts = True
If Len(rrow.Cells(1).Value) > 0 Then
rrow.Cells(1).Value = Left(out, Len(out) - 1)
End If
Next rrow
End Sub
显示了运行程序之前和之后的示例数据。你可以看到这不会达到你的目标。
接下来我们可以尝试按列合并。这里我们也在尝试 对于一列,即 B 列以查看效果。示例代码为 跟随。
Sub Merge_col_exp()
Dim cnum As Integer
Dim rng As Range
Dim str As String
For i = ActiveSheet.UsedRange.Rows.Count To 1 Step -1
cnum = Cells(i, 1).MergeArea.Count
Set rng = Range(Cells(i, 2), Cells(i - cnum + 1, 2)) ' only to demonstrate working in 2nd column
For Each cl In rng
If Not IsEmpty(cl) Then str = str + "," + cl
Next
If str <> "" Then str = Right(str, Len(str) - 1)
Application.DisplayAlerts = False
rng.Merge
rng = str
Application.DisplayAlerts = True
str = ""
i = i - cnum + 1
Next i
End Sub
显示了运行程序之前和之后的示例数据。您可以看到这更接近您的要求。您可以通过在 Actively used 范围中查找 Last Column 来扩展该程序的功能。将程序功能扩展到最后一列。
【讨论】:
这项工作非常接近我的要求。我只是问我如何开始编码。你给了我很多。感谢您的关注,@skkakkar @Ylmz_eng 很高兴我的帖子对您有所帮助。不要因反对票而灰心。当我从这里开始时,我也遇到过类似的情况,并且一直在努力达到现在的水平。以上是关于将 B 列的行与已合并的行 A 的计数合并的主要内容,如果未能解决你的问题,请参考以下文章
Pandas 将具有多个值的行数据合并到列的 Python 列表中
Oracle SQL 选择具有开始和结束日期的行,如果某些重叠合并行