我有一个宏,它使用列 A 以升序对一组列进行排序,列 A 中包含英文格式的日期和时间。工作表中的每个数据选择涵盖两天。这很好并且工作正常,直到月份发生变化,此时 30/04/2014 被视为大于 01/05/2014 的值。那时 01/05/2014 行放在顶部,30/04/2014 排到底部,这与我想要的相反。
这是进行排序的代码片段。
With Range("AA1")
.Value = 1
.Copy
'Modified the value conversion section to avoid changing the date to an american format
With Range("B1:Z" & WriteToRow - 1)
.PasteSpecial Paste:=xlPasteValues, Operation:=xlMultiply
End With
With Range("A1:Z" & WriteToRow - 1)
.Sort key1:=Range("A2"), order1:=xlAscending, Header:=xlYes
.EntireColumn.AutoFit
End With
.Value = ""
有人能帮忙吗?我以为我可以添加 中频声明说如果 A2 的前 2 个字符是 01 则降序排序,但是我需要另一个 IF 来说明如果前两个字符是 02 排序 再次升序,以便在每个月的 1 日和 2 日之间处理文件时,顺序是正确的。这对我来说似乎有点乱,所以我想我会看看是否有人比我聪明得多,有一个更清洁的解决方案。
谢谢,7
最佳答案
即使控制面板设置为正确的区域设置或语言,开发人员也可能来自完全不同的位置,处理来自不同国家的项目。
很高兴阅读所有专家的不同观点。要覆盖 OS 或 Excel Intelligence 确定日期格式,最好使用“=Text”命令对其进行格式化。
关于排序英式日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23543099/