乔山办公网我们一直在努力
您的位置:乔山办公网 > excel表格制作 > EXCEL编写宏自动排序,为什么双击单元格后才会排序

EXCEL编写宏自动排序,为什么双击单元格后才会排序

作者:乔山办公网日期:

返回目录:excel表格制作


像这种一个动作的宏,录制就可以的

Sub Macro1()
Columns("A:B").Sort _
Key1:=Range("A2"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
SortMethod:=xlPinYin, DataOption1:=xlSortNormal
End Sub

不见宏不好判断。

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

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

举例说明:

例如有一张明细表如图:

另有一张汇总表如图:

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

排序的代码如下:

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



像这种一个动作的宏,录制就可以的

Sub Macro1()
Columns("A:B").Sort _
Key1:=Range("A2"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
SortMethod:=xlPinYin, DataOption1:=xlSortNormal
End Sub

相关阅读

关键词不能为空
极力推荐

ppt怎么做_excel表格制作_office365_word文档_365办公网