合并具有相同值VBA的单元格

时间:2019-07-31 10:27:00

标签: excel vba merge cell

我想合并具有相同值的单元格。我查看了与此相关的其他主题,但都不相同。

WI05000002
WI05000002
WI05000002
WI05000002
WI05000002
WI05000002
WI05000002
WI05000002
WqP01650012
WqP01650012
WqP01650012
WqP01650012
WqP01650012
WqP01650012
WqP01650012 

输入数据:
enter image description here

所需结果:
enter image description here

Sub scalanie()


Dim P As Range ' deklaracja zmiennej P
  Dim komorka As Range ' deklaracja komórki

Application.DisplayAlerts = False
  Set P = Selection.Cells(1, 1)       ' zapamiętaj pierwszą komórkę z zaznaczenia
  For Each komorka In Selection       ' dla każdej komórki w zaznaczeniu
    If komorka = P Then               ' jeśli komórka jest taka sama jak P
      Range(komorka.Offset(0, 0), P).Merge ' scal powyżej komórki do P
                            ' zapamiętaj komórkę
    End If
  Next komorka  ' przejdź do następnej komórki

  Application.DisplayAlerts = True
End Sub

1 个答案:

答案 0 :(得分:0)

您的代码几乎正确。问题在于,P的值始终设置为等于第一个单元格Set P = Selection.Cells(1, 1),并且永远不变。因此,您选择的第二部分(即WqP01650012)不会合并。

尝试使用以下代码:

Sub scalanie()
    Dim P As Range ' deklaracja zmiennej P
    Dim komorka As Range ' deklaracja komórki

    Application.DisplayAlerts = False

      For Each komorka In Selection       ' dla kazdej komórki w zaznaczeniu
        On Error Resume Next
        If komorka.Value = komorka.End(xlUp).Value Then
            Range(komorka, komorka.Offset(-1, 0)).Merge
        End If
        On Error GoTo 0
      Next komorka  ' przejdz do nastepnej komórki

    Application.DisplayAlerts = True
End Sub

结果:

enter image description here