【问题标题】:merge cells with the same value VBA合并具有相同值VBA的单元格
【发布时间】:2019-07-31 10:27:00
【问题描述】:

我想合并具有相同值的单元格。我查看了有关此的其他主题,但没有一个是相同的。

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

输入数据:

想要的结果:

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

【问题讨论】:

  • 怎么了?你的问题在哪里?你有没有得到任何错误?请提供更多信息并提出问题(请参阅How to Ask)。输入代码并说“请帮我修复它”在这里不起作用。
  • 你为什么把你的文本数据和结果改成截图?为了帮助排除故障,将文本数据复制/粘贴到 Excel 中比手动复制屏幕截图要简单得多。
  • 另外,是否真的需要合并单元格。这很少是一个好的选择,因为与合并单元格的交互几乎总是很麻烦。

标签: excel vba merge cell


【解决方案1】:

您的代码几乎是正确的。问题是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

结果:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-28
    • 2022-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多