Vba 合并单元格具有相同值的列,不包括;0“;s
我见过很多关于合并的问题,但我无法(以我的入门级能力)来回答这个问题,我将永远感谢您的专业知识和帮助Vba 合并单元格具有相同值的列,不包括;0“;s,vba,excel,if-statement,merge,Vba,Excel,If Statement,Merge,我见过很多关于合并的问题,但我无法(以我的入门级能力)来回答这个问题,我将永远感谢您的专业知识和帮助 Month January February March April May Store 1 Campaign Period no yes yes yes no Campaign Details 0 50% off 50% off 50% of
Month January February March April May
Store 1 Campaign Period no yes yes yes no
Campaign Details 0 50% off 50% off 50% off 0
Store 2 Campaign Period no no no yes yes
Campaign Details 0 0 0 spring fling spring fling
Month January February March April May
Store 1 Campaign Period no yes yes yes no
Campaign Details 0 50% off 0
Store 2 Campaign Period no no no yes yes
Campaign Details 0 0 0 spring fling
我正在寻找合并不同组的细胞与相同的值为特定的范围
Month January February March April May
Store 1 Campaign Period no yes yes yes no
Campaign Details 0 50% off 50% off 50% off 0
Store 2 Campaign Period no no no yes yes
Campaign Details 0 0 0 spring fling spring fling
Month January February March April May
Store 1 Campaign Period no yes yes yes no
Campaign Details 0 50% off 0
Store 2 Campaign Period no no no yes yes
Campaign Details 0 0 0 spring fling
下面是输入和期望结果的示例。我对文件进行了格式化,使“0”和“否”不会显示,但是实际描述(用50%的折扣代替)相当长,不能在单个单元格中查看,因此需要合并单元格以更好地显示信息。还有多个商店,每周都会添加新的商店,因此我希望避免手动合并单元格
Month January February March April May
Store 1 Campaign Period no yes yes yes no
Campaign Details 0 50% off 50% off 50% off 0
Store 2 Campaign Period no no no yes yes
Campaign Details 0 0 0 spring fling spring fling
Month January February March April May
Store 1 Campaign Period no yes yes yes no
Campaign Details 0 50% off 0
Store 2 Campaign Period no no no yes yes
Campaign Details 0 0 0 spring fling
输入
Month January February March April May
Store 1 Campaign Period no yes yes yes no
Campaign Details 0 50% off 50% off 50% off 0
Store 2 Campaign Period no no no yes yes
Campaign Details 0 0 0 spring fling spring fling
Month January February March April May
Store 1 Campaign Period no yes yes yes no
Campaign Details 0 50% off 0
Store 2 Campaign Period no no no yes yes
Campaign Details 0 0 0 spring fling
期望输出
Month January February March April May
Store 1 Campaign Period no yes yes yes no
Campaign Details 0 50% off 50% off 50% off 0
Store 2 Campaign Period no no no yes yes
Campaign Details 0 0 0 spring fling spring fling
Month January February March April May
Store 1 Campaign Period no yes yes yes no
Campaign Details 0 50% off 0
Store 2 Campaign Period no no no yes yes
Campaign Details 0 0 0 spring fling
这应该让你开始。假设数据在“表1”中。它将合并列“A”中标有“活动详细信息”的行中的单元格。合并在具有相同值的相邻行单元格上执行-将合并至少两个具有相同值的相邻单元格
Month January February March April May
Store 1 Campaign Period no yes yes yes no
Campaign Details 0 50% off 50% off 50% off 0
Store 2 Campaign Period no no no yes yes
Campaign Details 0 0 0 spring fling spring fling
Month January February March April May
Store 1 Campaign Period no yes yes yes no
Campaign Details 0 50% off 0
Store 2 Campaign Period no no no yes yes
Campaign Details 0 0 0 spring fling
Option Explicit
Sub MergeSameDetails()
Dim sht As Worksheet
Set sht = Worksheets("Sheet1")
Application.DisplayAlerts = False
With sht
Dim lastrow As Integer, i As Integer, j As Integer, cnt As Integer
Dim val As Variant
lastrow = .Cells(.Rows.Count, "A").End(xlUp).Row
For i = 1 To lastrow
If .Cells(i, "A").Value = "Campaign Details" Then
cnt = 1
val = .Cells(i, 2).Value
For j = 3 To 7
If val = .Cells(i, j).Value Then
cnt = cnt + 1
Else
If cnt >= 2 And val <> "0" Then
.Range(Cells(i, j - cnt), Cells(i, j - 1)).Merge
.Cells(i, j - cnt).HorizontalAlignment = xlCenter
End If
cnt = 1
val = .Cells(i, j).Value
End If
Next
End If
Next
End With
Application.DisplayAlerts = True
End Sub
选项显式
子合并SameDetails()
将sht变暗为工作表
设置sht=工作表(“表1”)
Application.DisplayAlerts=False
用短发
Dim lastrow为整数,i为整数,j为整数,cnt为整数
Dim-val作为变体
lastrow=.Cells(.Rows.Count,“A”).End(xlUp).Row
对于i=1到最后一行
如果.Cells(i,“A”).Value=“活动详情”,则
cnt=1
val=.Cells(i,2).Value
对于j=3到7
如果val=.Cells(i,j).Value,则
cnt=cnt+1
其他的
如果cnt>=2且val为“0”,则
.范围(单元格(i,j-cnt),单元格(i,j-1)).合并
.单元(i,j-cnt).水平对齐=xlCenter
如果结束
cnt=1
val=.Cells(i,j).Value
如果结束
下一个
如果结束
下一个
以
Application.DisplayAlerts=True
端接头
大家好,欢迎来到SO。为了获得帮助,您需要展示您个人编写宏的尝试。基本上,您将跨越表中的单元格,并且每当一组相邻单元格(我猜是在同一行上)具有相同的“描述文本”时,就合并它们。如果您已经发布了此代码或发布了当前代码,我们将很乐意帮助您完成此代码。感谢您的反馈!当我输入下面的代码时,我收到一个“内存不足”的错误。抱歉,这里是:Sub-sbMergeColumns(),I=16到单元格(Rows.Count,1)。End(xlUp)。Row-If-Range(“di:Bdi”)“0”或Range(“di:Bdi”)“然后转到16-16 Range”(“di:Bdi”)。Merge(True)Next-End子感谢您的快速响应!我已经尝试编辑“活动详细信息”的代码,从“C”列开始,并将j范围调整为“D:BD”,但收到错误“下标超出范围”。然后我编辑了我的excel表格,使“活动详细信息”列在“A”列中,但仍然收到相同的错误。你能帮帮我吗?啊啊啊,别客气!我玩了一下,调整了一下列的设置,效果很好!非常感谢你!