excel中用 vba编写程序:将 A列先以单元格中后三位数为关键字按升序排序,再以前三位数按升序排序。

在excel中用vba编写程序:将A列先以单元格中后三位数为关键字按升序排序,再以前三位数按升序排序。排序前排序后... 在excel中用 vba编写程序:将 A列先以单元格中后三位数为关键字按升序排序,再以前三位数按升序排序。
排序前

排序后
展开
 我来答
windblast
推荐于2016-07-30 · 知道合伙人软件行家
windblast
知道合伙人软件行家
采纳数:5633 获赞数:13622
毕业于空军第一航空学院电子专业,1991年开始接触电脑,从事多年计算机编程,具有较丰富的经验。

向TA提问 私信TA
展开全部

如果不是必须写vba程序,可以如下做:




如果必须写VBA程序,以下是示例代码:


Sub Test()
    MaxCol = Sheet4.UsedRange.Columns.Count
    MaxRow = Sheet4.UsedRange.Rows.Count
    Sheet4.Cells(1, MaxCol + 1) = "=RIGHT(A1,3)"
    Sheet4.Cells(1, MaxCol + 2) = "=LEFT(A1,3)"
    Sheet4.Range(Cells(1, MaxCol + 1), Cells(1, MaxCol + 2)).Select
    Selection.AutoFill Destination:=Range(Cells(1, MaxCol + 1), Cells(MaxRow, MaxCol + 2))
    
    Cells.Select
    Sheet4.Sort.SortFields.Clear
    Sheet4.Sort.SortFields.Add Key:=Range(Cells(1, MaxCol + 1), Cells(MaxRow, MaxCol + 1)), _
        SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
        xlSortTextAsNumbers
    Sheet4.Sort.SortFields.Add Key:=Range(Cells(1, MaxCol + 2), Cells(MaxRow, MaxCol + 2)), _
        SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
        xlSortTextAsNumbers
    With ActiveWorkbook.Worksheets("Sheet4").Sort
        .SetRange Sheet4.UsedRange
        .Header = xlGuess
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
    
    Sheet4.Columns(MaxCol + 2).Select
    Selection.Delete Shift:=xlToLeft
    Sheet4.Columns(MaxCol + 1).Select
    Selection.Delete Shift:=xlToLeft
End Sub
匿名用户

2014-08-07
展开全部
应该不能直接排序,你先创建两个辅助列,用这两个辅助列排序就可以了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
it1580
2014-08-07 · 超过18用户采纳过TA的回答
知道答主
回答量:171
采纳率:0%
帮助的人:52.6万
展开全部
用函数在cd提取数值排序就可以了,用vba有点大材小用,函数"right,left"
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式