【发布时间】:2014-12-09 22:41:28
【问题描述】:
我正在构建一个宏,根据其值对一系列单元格进行升序/降序排序。 问题是它不适用于以下数据:
11_NR-10.pdf 16_NR-10.pdf 1_NR-10.pdf 6_NR-10.pdf
当我尝试排序时,我得到以下结果:
1_NR-10.pdf 11_NR-10.pdf 16_NR-10.pdf 6_NR-10.pdf
有人知道如何帮助我吗?
代码:
Dim xlSort As XlSortOrder
Dim LastRow As Long
With ActiveSheet
LastRow = .Cells(.Rows.Count, "A").End(xlUp).Row
If (.Range("A3").Value > .Range("A" & CStr(LastRow))) Then
xlSort = xlAscending
Else
xlSort = xlDescending
End If
.Range("A3:A" & LastRow).Sort Key1:=.Range("A3"), Order1:=xlSort, Header:=xlNo, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
End With
ActiveWorkbook.Save
【问题讨论】:
-
排序工作正常。字母排序是 1、11、2、22 等,而不是实际的 1、2、11、22。如果将文件名更改为 01、11、02、22。排序将是 01、02、11、22 .
-
如果您将这四个文件名放入四个不同的列单元格中并要求 Excel 对它们进行 A-Z 排序,这正是您将获得的排序顺序。然后,您的代码是正确的——从某种意义上说,它正在复制 Excel 的电子表格行为。
-
@PaulFrancis 不幸的是我无法更改文件名。它的左侧不能包含任何 0。
-
@FaustoArinosBarbuto 不幸的是,文件名需要在同一列中