EXCEL的VBA公式,求修改下

如图,这里想让表格排序,数据是3列一组,然后向下排序,当达到第44行的时候,就在第4列第二行排序过去,以此类推,然后一直向右走,然后以款式为主要条件排序,然后是编号然后如... 如图,这里想让表格排序,数据是3列一组,然后向下排序,当达到第44行的时候,就在第4列第二行排序过去,以此类推,然后一直向右走,然后以款式为主要条件排序,然后是编号
然后如果中间有删除任何一组,则后面的向前移上去
展开
 我来答
悲画扇
2016-09-11 · 知道合伙人金融证券行家
悲画扇
知道合伙人金融证券行家
采纳数:176 获赞数:2180
本人努力学习专业课程,很好的掌握专业知识,建立了系统的专业知

向TA提问 私信TA
展开全部

这个我还是建议现在其他工作表中全部进行排序,然后再用简单的公式导过去数据:


亲,望采纳哦!

追问
我也考虑了下,能不能这样,分sheet1跟sheet2,sheet1就用来写入,然后手动排序,然后设置一个按键,按下后让sheet1现有的数据按照上面的排序,排序到sheet2上去呢,这个应该能行得通
追答
这个写代码的话比较复杂啦,在sheet2中你只需要定义一下第二行的公式,然后向下拖拽,就完成了,不要太复杂哦!
freegoto
2016-09-11 · TA获得超过2204个赞
知道大有可为答主
回答量:1754
采纳率:80%
帮助的人:358万
展开全部

试试这个

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页的
追答
不会,如果数据较多,且不定的话,得修改代码
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
nhking
2016-09-11 · TA获得超过3.1万个赞
知道大有可为答主
回答量:3.6万
采纳率:78%
帮助的人:1.1亿
展开全部
写程序要花较长的时间和精力,你的数据不是很多,你可以将数据复制粘贴到一系列,排序后再按你的44行要求 复制到你要求的位置。这样做更简单。
追问
我也考虑了下,能不能这样,分sheet1跟sheet2,sheet1就用来写入,然后手动排序,然后设置一个按键,按下后让sheet1现有的数据按照上面的排序,排序到sheet2上去呢,这个应该能行得通
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式