首页 > 解决方案 > 在 Excel 中,如何使用 VBA 动态合并具有相同值的单元格?

问题描述

我正在为项目管理创建一个 excel,在甘特图部分,将 day 和 weeknum 作为信息会很好。

在此处输入图像描述

正如您在图片中看到的,顶部的滚动条使表格发生变化,因此合并也必须随着数字的移动而变化。

我没有尝试太多,因为我只是想不出一种自动执行此操作的方法。我希望单元格合并和取消合并,因为结果会改变。

这是我期望发生的事情:

在此处输入图像描述

如果需要,我可以展示卷轴的工作原理,使其在视觉上更容易理解。

标签: excelvbamerge

解决方案


这是我使用的那个。

Sub MergeSame()
    Dim rng As Range
    Dim First As Range
    Dim Last As Range

    Set rng = Selection

    If rng.Rows.Count > 1 Then Exit Sub

    For i = 1 To rng.Columns.Count + 1
        If rng.Cells(1, i).Value <> PreviousValue Then
            If Not (First Is Nothing) Then
                Set Last = rng.Cells(1, i - 1)
                Range(First, Last).Merge
            End If
            Set First = rng.Cells(1, i)
            PreviousValue = rng.Cells(1, i).Value
        Else
            rng.Cells(1, i).Clear
        End If

        rng.Cells(1, i).HorizontalAlignment = xlCenter

    Next i

End Sub

推荐阅读