EXCEL表中,有没有人可以做一列VBA程序,可以使数据填入后自动排序的,不需要手选排序。

EXCEL表中,有没有人可以做一列VBA程序,可以使数据填入后自动排序的,不需要手选排序。如第一列是名称,第二列是金额1,第三列是金额2,第三列是金额4,第五列是总计,让... EXCEL表中,有没有人可以做一列VBA程序,可以使数据填入后自动排序的,不需要手选排序。
如第一列是名称,第二列是金额1,第三列是金额2,第三列是金额4,第五列是总计,让总计按照从大到小自动排列,可以吗?(需要加分可以写明)
展开
 我来答
yuwd3
2012-09-21 · TA获得超过231个赞
知道小有建树答主
回答量:309
采纳率:0%
帮助的人:184万
展开全部
第一种一输入数据,自动排序
Private Sub Worksheet_Change(ByVal Target As Range)
Range("A:F").Sort Key1:=Range("F2"), Order1:=xlDescending, Header:=xlGuess
End Sub
第二种,右击自动排序
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
Range("A:F").Sort Key1:=Range("F2"), Order1:=xlDescending, Header:=xlGuess
End Sub
第三种,活动工作表时自动排序
Private Sub Worksheet_Activate()
Range("A:F").Sort Key1:=Range("F2"), Order1:=xlDescending, Header:=xlGuess
End Sub
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
无畏ing
推荐于2016-02-09 · TA获得超过6406个赞
知道大有可为答主
回答量:4549
采纳率:78%
帮助的人:2571万
展开全部
按ALT+F11
双击左上角的SHEET1
复制下面代码粘贴进去
Private Sub Worksheet_Change(ByVal Target As Range)
Range("A:E").Sort Key1:=Range("E2"), Order1:=xlDescending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, SortMethod _
:=xlPinYin, DataOption1:=xlSortNormal
End Sub

回到工作表,当在SHEET1表的E列输入数据时,将自动按降序排序.
追问
如我需要E2-E10的数量按大小排列,然后 E13-E20的数量按大小排列,可以吗?有什么样的修改
追答
Private Sub Worksheet_Change(ByVal Target As Range)
Range("A2:E10").Sort Key1:=Range("E2"), Order1:=xlDescending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, SortMethod _
:=xlPinYin, DataOption1:=xlSortNormal
Range("A13:E20").Sort Key1:=Range("E13"), Order1:=xlDescending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, SortMethod _
:=xlPinYin, DataOption1:=xlSortNormal
End Sub
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
太极健1969
2012-09-21 · TA获得超过9034个赞
知道大有可为答主
回答量:8668
采纳率:69%
帮助的人:3625万
展开全部
此代码指定E列输入时自动排序
Private Sub Worksheet_Change(ByVal Target As Range)
Dim arr, x&, y&, j&, k
If Target.Column = 5 And Target.Count = 1 And Target.Row > 1 Then
arr = Range("A2:E" & Range("A65536").End(xlUp).Row)
For x = 1 To UBound(arr) - 1
For y = x + 1 To uoubnd(arr)
If arr(x, 5) < arr(y, 5) Then
For j = 1 To UBound(arr, 2)
k = arr(x, j)
arr(x, j) = arr(y, j)
arr(y, j) = k
Next j
End If
Next y
Next x
Range("A2").Resize(UBound(arr), UBound(arr, 2)) = arr
End If
End Sub
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式