【问题标题】:Excel VBA Custom sort not working properlyExcel VBA 自定义排序无法正常工作
【发布时间】:2018-02-20 16:30:18
【问题描述】:

好的,所以我正在尝试通过参考表对我的分类表进行自定义排序,这里是参考表的一小部分

现在,每当我对分类表进行排序时,它就会变成这样

如您所见,它只排序到一定数量的行(C&J Global Enterprises),其余按字母顺序排序(这不是我想要的)

这是我的 VBA 代码

Private Sub WorkSheet_Activate()

Dim MainSheet As Worksheet, RefSheet As Worksheet
Set MainSheet = Worksheets("Classifieds Client Table")
Set RefSheet = Worksheets("RefTable")

Dim RangeOne As Range, RangeTwo As Range
Set RangeOne = MainSheet.Range("A2:A150")
Set RangeTwo = RefSheet.Range("A1:A137")

Dim MainRange As Range
Set MainRange = MainSheet.Range("A2:H150")

Application.AddCustomList ListArray:=RangeTwo
MainSheet.Sort.SortFields.Clear

MainRange.Sort Key1:=MainRange, Header:=xlNo, _
OrderCustom:=Application.CustomListCount + 1, MatchCase:=False, _
Orientation:=xlTopToBottom, DataOption1:=xlSortNormal

Application.DeleteCustomList Application.CustomListCount

提前致谢!

【问题讨论】:

  • 如果 C&J Global Enterprises 确实列在 RangeTwo 中,请尝试删除 & 符号 - 只是猜测,基于如果代码没有错误,数据肯定有错误的结论。
  • 如果您的示例代码不包含与问题无关的部分,会更容易为您提供帮助。 (见minimal reproducible example。)
  • @ashleedawg,抱歉,我认为这会有所帮助——Variatus,我现在就试试——TimWilliams 会检查它
  • 不,我们只是对损坏的部分感兴趣(当然还有相关数据!)

标签: vba excel sorting


【解决方案1】:

SortOn 不是 Range.Sort 的有效参数。

我怀疑你打算使用 SortMethod

修复该问题(并删除与答案无关的任何无关代码),如果它仍未按您的自定义列表排序,我将尝试编辑我的答案并找出答案。

更多信息:

【讨论】:

  • 先生,我已经编辑了我的代码,但仍然无法正确排序。我已经删除了所有特殊字符,用单词替换了数字,但它仍然不能正确排序。它只正确排序到某一行,然后其余的按字母顺序排序
  • 好的,我可以看看...但是你能用相同的数据替换第一个屏幕截图,但粘贴在文本中(作为代码块),以便我可以复制和粘贴它吗?
  • 为什么在引用列表时使用+1
  • 其实我用的是Tim Williams提供的链接里的答案,你可以看看我用的文件drive.google.com/open?id=1_O4RToVeFjmELIkNGX17ud9HL3al1FhE
  • 是的,我正在寻找
猜你喜欢
  • 2018-07-18
  • 1970-01-01
  • 1970-01-01
  • 2021-05-09
  • 1970-01-01
  • 1970-01-01
  • 2016-07-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多