Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 合并单元格具有相同值的列,不包括;0“;s_Vba_Excel_If Statement_Merge - Fatal编程技术网

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”列中,但仍然收到相同的错误。你能帮帮我吗?啊啊啊,别客气!我玩了一下,调整了一下列的设置,效果很好!非常感谢你!