如何对Vba排序

EXCEL的标准函数无法解决一些特殊的排序要求。这时,可以用VBA来对应。比如有一个原始数据表,如图:

根据这些原始数据,建立分类汇总数据表,如下图所示:

要求是当日程数据发生变化时,希望汇总表能自动排序。这样的需求不能通过手工自动排序。这样的要求只能依靠VBA。首先,编译一个排序程序,代码如下:

子排序()

将我的工作表调成字符串

Dim arr(1到3,1到2)

将I,J,K表示为整数

Dim M_S1 As String '存储交换区名称。

Dim M_S2作为双'商店交换销售。

MYsheet = "汇总排名"

工作表(我的工作表)。挑选

将值读入数组。

对于I = 1到3

对于J = 1到2

arr(I,J) = Cells(I + 1,J + 1)

下一个J

接下来我

整理

对于I = 1到2

对于J = I + 1到3

If arr(I,2)& lt;那么arr(J,2)

?M_S1 = arr(I,1)

?S2 = arr(I,2)

?arr(I,1) = arr(J,1)

?arr(I,2) = arr(J,2)

?arr(J,1) = M_S1

?arr(J,2) = M_S2

如果…就会结束

下一个J

接下来我

将数组的排序结果存储在单元格中。

对于I = 1到3

单元格((I + 1),2) = arr(I,1)

接下来我

末端接头

然后编写一个单元格内容变化的事件触发程序,代码如下:(注意:这段代码要放在原始数据表中)

私有子工作表_change(ByVal目标作为范围)

如果目标。列& lt那么= 4

?分类

如果…就会结束

末端接头