Excel表格怎么输入数据自动排序

姓名 业绩
第一名 1地区 $0
第二名 2地区 $0
第三名 3地区 $0
第四名 4地区 $0
第五名 5地区 $0
前面排名不动,在业绩里输入数字以后,地区和业绩自动根据业绩降序排序

编制一个排序的VBA程序。再写一个时间触发的程序来调用该排序程序。

时间触发就是在约定的单元格,只要有数据变化就启动该事件。

举例说明:

例如有一张明细表如图:

另有一张汇总表如图:

现在要编制二个宏。一个是对汇总表进行排序。一个是当明细表有数据变更时,触发该排序的程序。

排序的代码如下:

Sub 排序()

Dim mYsheet As String

Dim arr(1 To 3, 1 To 2)

Dim I, J, K As Integer

Dim M_S1 As String '存放交换地区名

Dim M_S2 As Double '存放交换销售额

mYsheet = "汇总排名"

Sheets(mYsheet).Select

'将数值读取到数组中

For I = 1 To 3

    For J = 1 To 2

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

    Next J

Next I

'排序

For I = 1 To 2

   For J = I + 1 To 3

       If arr(I, 2) < arr(J, 2) Then

          M_S1 = arr(I, 1)

          M_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

       End If

   Next J

Next I

'将数组的排序结果存放到单元格中

For I = 1 To 3

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

Next I

End Sub

事件驱动,只要明细表的前4列有数据变化就启动排序

Private Sub worksheet_change(ByVal target As Range)

  If target.Column <= 4 Then

     æŽ’序

  End If

End Sub

温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-04-13
你先把整个表的数据填写完整在选中名次后的其余列
再在菜单中找到自动排序
根据业绩降序排列
就可以勒
还有不清楚的再找我追问

请问,可不可以不用手动点排序,而是输入数据以后就自动排列呢,用什么函数公式可以做到?

追答

好像不行,
这样就可以你输完数据之后再排列.
是一样的效果.也简单些..

本回答被提问者采纳
第2个回答  2011-04-13
没有输入了自动排序的,都是输完了再排序,
如果你怕输入的数值大于上面的数值,就用数据有效性限制一下吧,本回答被网友采纳
第3个回答  2011-04-13
排序时选定区域(不要把排名那列选进去)。
第4个回答  2020-10-17
相似回答