Excel VBA Excel如何对重复值进行排序?

Excel VBA Excel如何对重复值进行排序?,vba,excel,sorting,Vba,Excel,Sorting,我想知道Excel如何对相同的值进行排序。我有身份证号码,但有时会有重复的身份证号码。我不确定Excel将如何决定如何订购这些产品?它会仅仅查看相邻行中的信息,然后将这些值作为部分或顺序进行比较吗 如果我有: Column A | Column B 166 C 166 A 166 B 然后在A列上按降序排序,我会得到: Column A | Column B 166 C 166 A 166

我想知道Excel如何对相同的值进行排序。我有身份证号码,但有时会有重复的身份证号码。我不确定Excel将如何决定如何订购这些产品?它会仅仅查看相邻行中的信息,然后将这些值作为部分或顺序进行比较吗

如果我有:

Column A | Column B
166          C
166          A
166          B
然后在A列上按降序排序,我会得到:

Column A | Column B
166          C
166          A  
166          B
Column A | Column B
166          A
166          B
166          C
或者我会得到:

Column A | Column B
166          C
166          A  
166          B
Column A | Column B
166          A
166          B
166          C

谢谢。

Excel的排序应该是一种稳定的排序,因此应保留相等元素的顺序。您应该能够执行类似于基数排序的操作,对行进行多重排序,从最低有效列到最高有效列。一次可以按3列对行进行排序

如果使用Visual Basic进行排序,请注意选择排序和快速排序并不稳定。使用插入排序(稳定)或气泡排序(稳定)。我不知道是否可以用VBA实现合并排序(稳定)


如果VBA有可能,则可以通过将比较中的行号作为最低有效比较器来稳定非稳定排序。

如果需要,可以添加额外的列作为平分符。但如果没有这种情况,则具有相等值的行的顺序基本上是随机的。排序是不稳定的。虽然我不知道答案,但我认为它只会从左向右读取列。但是,如果您关心第二列,那么您最好明确地指定第二列。@pnuts-比键入这个经过深思熟虑的问题更麻烦!:)我认为Excel不会使用相邻列中的信息,除非您明确告诉它,将这些信息添加到通过UI对话框定义的“排序”列中。电子表格和数据库排序通常是稳定的。在比较行时,将忽略未指定用于排序的相邻单元格……因此应保留相等元素的顺序:听起来合理(并得到快速测试的支持)。您是否有权威参考来支持此声明?@chrisneilsen-microsoft示例。电子表格和数据库排序通常是稳定排序。Excel始终执行稳定排序。VBA快速排序不稳定,许多其他排序也不稳定。但是从UI排序是非常困难的。