0
我想讓代碼知道數據表有多大,然後對它進行排序。我認爲,一旦我知道表格有多大,我就會聲明一個變量範圍,並告訴Excel首先按變量範圍「Account」,然後「Symbol」和「Quantity」進行排序。按變量排序範圍
問題與對象的ActiveWorkbook.Worksheets("Mutual Funds").Sort.SortFields.Add Key:=Range("Account")...
方法範圍出現」全球失敗是我的錯誤信息。看來,這不是給它一個可變範圍的正確方法。
任何人都知道如何解決這個問題?
Sub Macro1()
'
ActiveWorkbook.Sheets("Mutual Funds").Activate
Range("A12").Select
Do Until IsEmpty(ActiveCell)
ActiveCell.Offset(1).Select
Loop
ActiveCell.Offset(-1).Select
Dim Account As Range
Dim Symbol As Range
Dim Quantity As Range
Dim EntireRange As Range
Set Account = Range(ActiveCell, "A11")
Set Symbol = Range(ActiveCell.Offset(, 9), "J11")
Set Quantity = Range(ActiveCell.Offset(, 7), "H11")
Set EntireRange = Range(ActiveCell, "AS11")
ActiveWorkbook.Worksheets("Mutual Funds").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Mutual Funds").Sort.SortFields.Add Key:=Range("Account"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortTextAsNumbers
ActiveWorkbook.Worksheets("Mutual Funds").Sort.SortFields.Add Key:=Range("Symbol"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
ActiveWorkbook.Worksheets("Mutual Funds").Sort.SortFields.Add Key:=Range("Quantity"), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Mutual Funds").Sort
.SetRange Range("EntireRange")
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End Sub
你可以使用什麼是ActiveWorkbook.Worksheets(「共同基金」)UsedRange.Address來確定數據有多大。我猜測你只需要一個範圍,並想通過某種東西來排序所有數據。爲什麼你要指定多個範圍?你是否需要通過一個以上的穀物進行排序? –
我希望做一個多層次的排序。所以它會按列A和formost排序,但如果有重複的話,它也會對J列進行排序,然後列H –
我不認爲排序功能是這樣的,除非你願意忽略數據例如,如果單元格A1中包含「this」,並且B1中包含「that」,那麼A2中包含「A」,而B2中包含「Z」。如果按A列升序排序並且不包含B列,則它將在單元格A1中具有「A」,並在單元格A2中具有「this」。 B列將保持不變。這個可以嗎? –