如果列中的单元格具有内容但是本身为空白,则如何合并列中的单元格

时间:2016-07-27 11:05:09

标签: excel vba excel-vba

这有什么麻烦我:

对于P列中的单元格,例如P3,如果P2和P都是如此。 B3不为空,但P3为空,然后将P2与P3合并。然后继续进行P列中的下一个单元格,直到B列中的相应单元格(例如:B8)为空,然后停止。

       B      ....      P
 1  Monitor            Tom
 2   Mouse             Ann
 3  Keyboard
 4  Sticker
 5  Speaker            John
 6   Cable
 7    Fan              Rose
 8

所以对于上面的表格,我想合并P2:P4& P5:P6。 我已经尝试了几次与我糟糕的vba技能,但失败了......

这段代码是我在这个网站上找到的,我试过编辑它,看看这是否可以解决我的问题,但它不起作用......

Sub Merge()
LR = ActiveSheet.Cells(Rows.Count, "B").End(xlUp).Row
For i = 1 To LR
If ActiveSheet.Cells(i, 1).Value <> "" And ActiveSheet.Cells(i + 1, 1).Value = "" And ActiveSheet.Cells(i + 1, 2).Value <> "" Then
   u = i + 1
   Do While ActiveSheet.Cells(u, 1).Value = "" And ActiveSheet.Cells(u, 2) <> ""
        u = u + 1
    Loop
    ActiveSheet.Range("A" & i & ":A" & (u - 1)).Select
    With Selection
        .Merge
        .BorderAround Weight:=xlMedium
        .WrapText = True
        '.VerticalAlignment = x1VAlignTop
        '.HorizontalAlignment = xlLeft
    End With
    Sheets(DataSheet).Range("B" & i & ":B" & (u - 1)).BorderAround Weight:=xlMedium
    i = u + 1
End If

接下来我 结束子

1 个答案:

答案 0 :(得分:1)

试试这个:

Dim i As Integer, a As String, b As String, c As Integer, d  As Integer
i = 11
a = "B"
b = "P"
c = 0
d = 0
While Range(a & i) <> ""
    If Range(b & i) = "" Then
        If c = 0 And i > 1 Then
            c = i - 1
            d = 1
        Else
            d = d + 1
        End If
    Else
        If c > 0 And d > 0 Then
            Range(b & c & ":" & b & (c + d)).Merge
        End If
        c = 0
        d = 0
    End If
    i = i + 1
Wend
If c > 0 And d > 0 Then
    Range(b & c & ":" & b & (c + d)).Merge
End If