Excel中的数据从最大到最小排列

Excel中的数据是否可以从最大值到最小值进行排列? 这不是一个典型的例子。 我有一列包含1558个数字的数据。 但是,我想select前38个数字,并从最高值到最低值进行sorting。 在此之后,我想为接下来的38个号码做同样的事情,直到所有的1558号码都被处理完毕。 这是可能的,而不必突出显示每个38个数字和41次使用sortingfunction?

是的,这是可能的:这是一个excel公式的方式。 这里的关键点是row()必须从第一行开始,否则我们必须在划分之前从row()中减去第一行。-0.01是为了确保38的增量不会移动到下一个组; 同时确保第一组logging保存在第一组中。

使用formula =ROUNDDOWN(ROW()/38-0.01,0)插入一个列,然后填充(假设您从单元格A1开始),然后在列a上sorting,然后将包含要sorting的数字的下一列max分钟。

这样做是为每组38个相同的数字生成一列,然后允许您先按升序对其进行sorting,然后按降序sorting,保留每组38个,并将每组中的最大值sorting为最小值。

在这里输入图像说明

像这样的东西应该工作。 您可以从C1 – C38中select一个特定范围,然后进行sorting。 接下来分类C39 – C77等。

 Range("C1") = "Index" Columns("A:C").Sort key1:=Range("C2"), _ order1:=xlAscending, header:=xlYes 

https://msdn.microsoft.com/en-us/library/office/ff840646.aspx

一个快速的VBA循环应该这样做。 只需按38步sorting每个组。 假设您的数据在列A中,并从第一行开始,您可以使用以下内容:

 Dim i As Long For i = 1 To 1558 Step 38 Range(Cells(i, "A"), Cells(i + 37, "A")).Sort Range("A1"), xlDescending Next 

我知道,xQbert已经以简单的方式回答了这个问题。 下面是我可以做的有趣的魔术配方,可以一气呵成,

考虑到这些值从A1单元格开始往下跑,直到任何范围(这里是A1558)。 复制粘贴这个公式到任何其他列,例如:B1,并将其拉下,直到B1558(或任何你有最大范围)。

 =SMALL(INDIRECT("A"&(38*(ROUNDDOWN((ROW()-1)/38,0)))+1&":"&"A"&(38*((ROUNDDOWN(ROW()/38,0)+IF(MOD(ROW(),38)=0,0,1))))),IF(ROW()>38,IF(MOD(ROW(),38)=0,38,MOD(ROW(),38)),ROW())) 

哦! 你说的最小? 将SMALL()函数更改为LARGE()

 =LARGE(INDIRECT("A"&(38*(ROUNDDOWN((ROW()-1)/38,0)))+1&":"&"A"&(38*((ROUNDDOWN(ROW()/38,0)+IF(MOD(ROW(),38)=0,0,1))))),IF(ROW()>38,IF(MOD(ROW(),38)=0,38,MOD(ROW(),38)),ROW())) 

没有别的事情需要完成,你把你的分类组合如下所示。

在这里输入图像说明