返回目录: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