合并/删除重复的单元格值

合并/删除重复的单元格值

我在合并具有相同值的单元格时遇到问题。我收到的 Excel 文件的列数和行数各不相同,因此我无法使用针对固定行数或列数设置的宏。我遇到的情况如下合并前 Excel

第一行当然是标题行,其中包含过滤器。我想要的是这样的

合并后 excel

所以我仍然可以按所有列对内容进行排序(因此酷自行车仍然会向我显示 4 行)是否有一个宏或脚本可以做到这一点,并且不会因工作表的大小(有时是几千行)而变得不响应,并且不需要手动更改和设置每张工作表?

在此先感谢您的帮助。

答案1

如果这是一个显示问题,您只需使用条件格式即可。

规则如下:

=$C1=$C2

格式将采用以下Number Format 自定义格式: ;;;

并且,无论您按哪一列排序,标语也适用于其上方出现的空白行,就像您的示例一样。

如果您愿意,可以在宏中完成条件格式的排序和应用。

但是,您必须按tagline最后排序才能将所有具有相同标语的自行车分组在一起。

在此处输入图片描述

在此处输入图片描述

答案2

该宏应该可以工作:

Public Sub merger()
    Application.DisplayAlerts = False
    Dim wkb As Workbook
    Dim wks As Worksheet
    Set wkb = ThisWorkbook
    Set wks = wkb.Sheets("Sheet1")
    firstrow = 2
    lastcolumn = "Z"
    columnsortkey = "C"
    columnmerge = 3
    Columns("A:" & lastcolumn).Sort key1:=Range(columnsortkey & ":" & columnsortkey), Header:=xlYes
    theEnd = False
    thisrow = firstrow
    found = False
    Count = 0
    While theEnd = False
        firstCell = wks.Cells(thisrow, columnmerge)
        nextCell = wks.Cells(thisrow + 1, columnmerge)
        If firstCell = nextCell Then
            If found = False Then
                found = True
                mergerfirst = thisrow
                Count = Count + 1
            Else
                Count = Count + 1
            End If
        Else
            If found = True Then
                Range(Cells(mergerfirst, columnmerge), Cells(mergerfirst + Count, columnmerge)).Merge
                found = False
                Count = 0
            End If
        End If
        thisrow = thisrow + 1
        If firstCell = "" Then theEnd = True
    Wend
    Application.DisplayAlerts = True
End Sub

为了使其工作,你必须用ALT+打开 VBA/Macros F11,然后在本工作簿插入一个新模块并粘贴代码。

相关内容