如何使用Excel/Visual Basic对聚合进行排序

如何使用Excel/Visual Basic对聚合进行排序,excel,vba,vb.net,sorting,grouping,Excel,Vba,Vb.net,Sorting,Grouping,我面临的是下一个问题:我在Excel中有以下数据库,我想对“金额”变量进行升序排序,考虑到有3个不同的组(组X、项目ZZ和组Z),不仅要对组进行排序,还要对相应的项目进行排序 X组有3个不同的项目需要进行上排排序(项目XA、项目XB、项目XC) ZZ项是一个没有组的项,因此它本身可以被视为一个组 Y组有4个项目(项目YA、项目YB、项目YC、项目YD)要进行升序排序 我正在使用的数据库是下一个: 密码 名称 数量 10010 X组 20000 10011 项目XA 2000 10012 项目

我面临的是下一个问题:我在Excel中有以下数据库,我想对“金额”变量进行升序排序,考虑到有3个不同的组(组X、项目ZZ和组Z),不仅要对组进行排序,还要对相应的项目进行排序

  • X组有3个不同的项目需要进行上排排序(项目XA、项目XB、项目XC)
  • ZZ项是一个没有组的项,因此它本身可以被视为一个组
  • Y组有4个项目(项目YA、项目YB、项目YC、项目YD)要进行升序排序
我正在使用的数据库是下一个:

密码 名称 数量 10010 X组 20000 10011 项目XA 2000 10012 项目XB 8000 10013 项目XC 10000 10020 第ZZ项 22000 10030 Y组 26000 10031 项目YA 11000 10032 项目YB 5000 10033 项目YC 9000 10043 项目YD 1000
这可以单独在Excel中完成

要获得显示的结果,需要按以下方式排序:

  • Y、Z、X的自定义顺序分组
  • 然后按数量降序排列
组是名称最后一个单词的第一个字母

使用以下公式创建自定义列:

=LEFT(TRIM(RIGHT(SUBSTITUTE(B2," ",REPT(" ",99)),99)))
然后进入排序对话框:

结果


因为您遵循的是非逻辑排序(逻辑将是a-z,z-a),因此需要一个辅助列,因此根据
Name
的值,您可以分配一个值并按该值排序。此外,您还使用VBA和VB.NET为问题添加了标签,这两个版本不相同。如果您想要VBA解决方案,请发布您尝试过的代码。提前感谢您的回答。已经有一个名为“Code”的辅助列,其对应的组和项的前四个值相同。然而,这还不足以达到预期的效果。此外,问题中的其他标记只是因为Excel可能无法解决此问题,所以我愿意尝试其他不同的方法。我知道自定义列表,但不知道它们可以用作自定义排序字段。这太好了。我在一个助手列中考虑,根据组的不同,使用数值,但这个答案确实是最好的选择。@FoxfireAndBurnsAndBurns这实际上是我在Excel中自定义列表的主要用途:-)