EXCEL的VBA公式,求修改下
如图,这里想让表格排序,数据是3列一组,然后向下排序,当达到第44行的时候,就在第4列第二行排序过去,以此类推,然后一直向右走,然后以款式为主要条件排序,然后是编号然后如...
如图,这里想让表格排序,数据是3列一组,然后向下排序,当达到第44行的时候,就在第4列第二行排序过去,以此类推,然后一直向右走,然后以款式为主要条件排序,然后是编号
然后如果中间有删除任何一组,则后面的向前移上去 展开
然后如果中间有删除任何一组,则后面的向前移上去 展开
3个回答
2016-09-11 · 知道合伙人金融证券行家
关注
展开全部
试试这个
Sub 排序()
Application.ScreenUpdating = False
With ActiveSheet
Range("D2:F44").Cut
.Paste Range("A45")
Range("G2:I44").Cut
.Paste Range("A88")
Range("A2").Select
.Sort.SortFields.Clear
.Sort.SortFields.Add Key:=Range("B2:B130"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
.Sort.SortFields.Add Key:=Range("A2:A130"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveSheet.Sort
.SetRange Range("A1:I130")
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Range("A88:C130").Cut
.Paste Range("G2")
Range("A45:C87").Cut
.Paste Range("D2")
End With
Application.ScreenUpdating = False
End Sub
更多追问追答
追问
那这个的话,在I列走完之后,会向J列写过去吗?我这里数据基本都是要5-10页的
追答
不会,如果数据较多,且不定的话,得修改代码
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
写程序要花较长的时间和精力,你的数据不是很多,你可以将数据复制粘贴到一系列,排序后再按你的44行要求 复制到你要求的位置。这样做更简单。
追问
我也考虑了下,能不能这样,分sheet1跟sheet2,sheet1就用来写入,然后手动排序,然后设置一个按键,按下后让sheet1现有的数据按照上面的排序,排序到sheet2上去呢,这个应该能行得通
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询