方法1 – 先取消合并,对Excel中的合并单元格进行排序1.1 单列步骤:第 1 部分
选择我们需要排序的单元格。单击“主页”选项卡中的“合并和居中”以选择取消合并单元格选项。
找到取消合并后的空白单元格,然后点击查找和选择选项卡以选择转到特殊功能。
在转到特殊窗口中,选中空白选项,然后点击确定。
我们可以看到空白单元格,并且第一个单元格B6 被选中。
在编辑栏中,写入=B5,单元格引用位于所选空白单元格B6正上方,然后按Ctrl + Enter。
上述步骤用合并单元格中的数字填充空白单元格。
步骤:第 2 部分
选择单元格。右键单击鼠标。将鼠标悬停在排序选项上以选择从最小到最大排序。
我们成功地按照我们的所需顺序对数字进行了排序。
1.2 多列我们将根据合并列(即“区域”列)对具有多列的数据集进行排序。
选择整个数据集,然后按照第 1.1 节的步骤:第 1 部分取消合并合并单元格和 >填充空白单元格。结果如下面的屏幕截图所示。
我们必须遵循一些简单的步骤来实现我们的目标。
复制通过上述步骤未合并并填充的单元格B5:B12。转到排序和过滤选项,然后从主页选项卡中选择从A到Z排序。
保留警告对话框中的默认选项,然后点击确定对所有数据进行排序。区域列随之而来。
我们根据合并列对数据集进行排序。
根据合并列以外的列对数据集进行排序
根据利润列对以下数据集排序。请注意B 列中有合并单元格,我们无法直接对数据集进行排序。
选择整个数据集,然后按照第 1.1 节的步骤:第 1 部分操作取消合并合并的单元格并填充空白单元格。结果如下面的屏幕截图所示。
现在我们需要执行以下操作。
复制通过上述步骤未合并并填充的单元格B5:B12。将它们粘贴到与仅值相同的位置,以删除公式。
选择利润列。在主页选项卡中,转到排序和过滤并选择从最小到最大排序。
保留警告对话框中的默认选项,然后点击确定对左侧的所有数据进行排序利润栏随之而来。
这是排序后的数据集。
方法2 – 使用VBA代码对Excel中的合并单元格进行排序2.1 单列步骤:
转至开发人员选项卡并选择Visual Basic 选项。
在Visual Basic 窗口中,从插入选项卡中选择模块选项来打开新模块。
将以下代码放入 Visual Basic 编辑器中,然后按F5运行代码。Sub Sort_Merged_Cells()
Dim MyRange As Range
Set MyRange = Range("A1:A9")
On Error Resume Next
With MyRange
.UnMerge
.Resize(.Rows.Count, 1).SpecialCells(xlBlanks). _
Formula = "=R[-1]C"
.Sort Key1:=.Range("A1")
Range("VBA_RecFmt").Copy
.PasteSpecial Paste:=xlPasteValues
End With
End Sub我们使用A1:A9作为范围,使用A1作为排序的键范围。
我们看到的输出是A 列中已排序未合并的单元格。
2.2 多列我们将对具有多列的数据集进行排序。在以下数据集中,区域列具有三个合并单元格。
在 Visual Basic 编辑器中复制并粘贴以下代码,以基于数据集排序按字母顺序排列的区域列。
Sub Sort_Merged_Cells()
Dim MyRange As Range
Set MyRange = Range("A4:E11")
On Error Resume Next
With MyRange
.UnMerge
.Resize(.Rows.Count, 1).SpecialCells(xlBlanks). _
Formula = "=R[-1]C"
.Sort Key1:=.Range("A4")
Range("VBA_RecFmt").Copy
.PasteSpecial Paste:=xlPasteValues
End With
End Sub在此代码中,我们使用 A4:E11 作为范围,使用 A4 作为键来排序< 范围。
以下屏幕截图显示了排序后的数据集。
要记住的事情尽管使用VBA代码对于实现我们的目标非常有用。但是一旦代码运行,我们就会丢失历史记录。这意味着我们无法再撤消更改。如果我们在排序警告框中中选择第二个选项,它将仅对选定的列单元格进行排序,不是关联列。这就是我们如何失去数据集单元格之间的关系。此选项可用于仅对不与其他列相连的一列进行排序的情况。