我用它对几列数字按升序排序:
With Workbooks(LotWB).Worksheets("SQL Data").Sort
.SortFields.Add Key:=Range("J1"), Order:=xlAscending
.SortFields.Add Key:=Range("H1"), Order:=xlAscending
.SortFields.Add Key:=Range("G1"), Order:=xlAscending
.SortFields.Add Key:=Range("A1"), Order:=xlAscending
.SortFields.Add Key:=Range("B1"), Order:=xlAscending
.SetRange Workbooks(LotWB).Worksheets("SQL Data").Range("A1:AG" & LastRowLot)
.Header = xlYes
.Apply
End With但是当我运行代码时,它以一种奇怪的方式对数字进行排序(例如1、17、25、33、9)。我知道这些数字是按照第一个(最左边)数字排序的。我能做些什么来防止这种错误的分类?
发布于 2021-01-13 23:23:09
更改包含格式为文本的数字的单元格中的格式
.Value = .Value工作。代码
Const SortColumns As String = "A:A,B:B,G:G,H:H,J:J"
With Workbooks(LotWB).Worksheets("SQL Data")
Application.ScreenUpdating = False
Dim rng As Range
With .Range("A1").CurrentRegion
Set rng = .Resize(.Rows.Count - 1).Offset(1)
End With
With Intersect(rng, .Range(SortColumns))
.NumberFormat = 0 ' Choose the number format you need.
For Each rng In .Areas
rng.Value = rng.Value
Next rng
End With
With .Sort
.SortFields.Add Key:=Range("J1"), Order:=xlAscending
.SortFields.Add Key:=Range("H1"), Order:=xlAscending
.SortFields.Add Key:=Range("G1"), Order:=xlAscending
.SortFields.Add Key:=Range("A1"), Order:=xlAscending
.SortFields.Add Key:=Range("B1"), Order:=xlAscending
.SetRange .Parent.Range("A1:AG" & LastRowLot)
.Header = xlYes
.Apply
End With
Application.ScreenUpdating = True
End With发布于 2021-01-13 23:11:00
谢谢斯科特。
这是我在排序前所用的
With Workbooks(LotWB).Worksheets("SQL Data").Columns(7)
.NumberFormat = "0"
.Value = .Value
End Withhttps://stackoverflow.com/questions/65710858
复制相似问题