【问题标题】:Sorting data by multiple columns with zeros and blanks按带有零和空格的多列对数据进行排序
【发布时间】:2023-02-02 10:38:11
【问题描述】:

我正在尝试编写对工作表中的两列进行排序的代码,但由于存在零和空白而遇到困难。

我需要按日期排序(最早到最旧),然后根据保费对数据进行排序(从大到小,但输入的保费为空白或零)。

我希望宏命令工作表,以便它按顺序显示日期(最早),然后显示保费(最大)。

到目前为止,这是我所拥有的,但效果不佳,有人可以帮忙吗?

P = 日期

F =溢价

Range = A2:BA5000(条目不应超过此数字并且它不是表格)

A3 中总会有一些东西(这是一个保单号,任何输入表格的东西都必须有一个保单号)

电子表格保存在 SharePoint 上并且自动保存处于打开状态

Sub MultiLevelSort()


Worksheets("Portfolio Tracker").Unprotect Password:="Password"

Worksheets("Portfolio Tracker").Sort.SortFields.Clear



Range("A3", Range("A3").End(xlDown)).Sort Key1:=Range("F3"), Key2:=Range("P3"), Header:=xlYes, _
    Order1:=xlAscending, Order2:=xlDescending

Worksheets("Portfolio Tracker").Protect Password:="Password", AllowSorting:=True, AllowFiltering:=True, AllowUsingPivotTables:=True, DrawingObjects:=True, Scenarios:=False, AllowDeletingRows:=True


End Sub

任何帮助都会很棒,因为它让我发疯。

【问题讨论】:

  • 您是否尝试过使用宏录制器执行此操作?它应该像清理记录器输出的代码一样简单。
  • 未测试但检查密钥和命令。也许像Key1:=Range("P3"), Key2:=Range("F3"), Header:=xlYes, Order1:=xlDescending, Order2:=xlDescending

标签: excel vba sorting columnsorting


【解决方案1】:

对范围进行排序

之前和之后

代码

Option Explicit

Sub MultiLevelSort()

    Dim wb As Workbook: Set wb = ThisWorkbook ' workbook containing this code
    Dim ws As Worksheet: Set ws = wb.Worksheets("Portfolio Tracker")
    
    ws.Unprotect Password:="Password"
    
    If ws.AutoFilterMode Then ws.AutoFilterMode = False 

    Dim lRow As Long: lRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
    Dim rg As Range: Set rg = ws.Range("A3", ws.Cells(lRow, "BA"))

    ws.Sort.SortFields.Clear

    rg.Sort Key1:=rg.Columns(6), Order1:=xlAscending, _
        Key2:=rg.Columns(16), Order2:=xlDescending, _
        Header:=xlNo

    ws.Protect Password:="Password", AllowSorting:=True, AllowFiltering:=True, _
        AllowUsingPivotTables:=True, DrawingObjects:=True, Scenarios:=False, _
        AllowDeletingRows:=True

End Sub

【讨论】:

  • 谢谢你,这真的很有帮助,而且是一种享受。
  • 也感谢@FoxfireAndBurnsAndBurns。
猜你喜欢
  • 2010-11-20
  • 1970-01-01
  • 1970-01-01
  • 2021-05-06
  • 1970-01-01
  • 2011-09-22
  • 2018-10-09
相关资源
最近更新 更多