【问题标题】:How to sort aggrupations using Excel/Visual Basic如何使用 Excel/Visual Basic 对聚合进行排序
【发布时间】:2021-05-31 18:48:36
【问题描述】:

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

  • GROUP X 有 3 个不同的项目按升序排序(ITEM XA、ITEM XB、ITEM XC)。
  • ITEM ZZ 是一个没有分组的条目,所以它本身可以被认为是一个分组。
  • GROUP Y 有 4 个项目(ITEM YA、ITEM YB、ITEM YC、ITEM YD)按升序排序。

我正在使用的数据库是下一个:

Code Name Amount
10010 GROUP X 20000
10011 ITEM XA 2000
10012 ITEM XB 8000
10013 ITEM XC 10000
10020 ITEM ZZ 22000
10030 GROUP Y 26000
10031 ITEM YA 11000
10032 ITEM YB 5000
10033 ITEM YC 9000
10043 ITEM YD 1000

Ant 变量排序后我想要得到的结果如下:

Code Name Amount
10030 GROUP Y 26000
10031 ITEM YA 11000
10033 ITEM YC 9000
10032 ITEM YB 5000
10043 ITEM YD 1000
10020 ITEM ZZ 22000
10010 GROUP X 20000
10013 ITEM XC 10000
10012 ITEM XB 8000
10011 ITEM XA 2000

如您所见,它首先对组进行了排序,并且在每个组内,项目也按升序排序。

如果有人能帮我解决这个问题,我将不胜感激

【问题讨论】:

  • 因为您遵循的是非逻辑排序(逻辑将是 az、za),所以您需要一个辅助列,因此根据 Name 的值,您可以指定一个值和顺序通过那个。此外,您使用 VBA 和 VB.NET 标记了问题,它们相同。如果您需要 VBA 解决方案,请发布您尝试过的代码。
  • 提前感谢您的回答。已经有一个名为“代码”的辅助列,其对应的组和项目的前 4 个值相同。然而,仅仅获得预期的结果是不够的。此外,问题中的其他标签只是因为 Excel 可能无法解决这个问题,所以我愿意尝试其他不同的方式。

标签: excel vba vb.net sorting grouping


【解决方案1】:

这可以单独在 Excel 中完成。

要获得你显示的结果,你需要排序:

  • GroupY,Z,X 的自定义顺序
  • 然后按金额降序排列

组是名称最后一个单词的第一个字母

使用公式创建自定义列:

=LEFT(TRIM(RIGHT(SUBSTITUTE(B2," ",REPT(" ",99)),99)))

然后进入排序对话框:

结果

【讨论】:

  • 我知道自定义列表,但不知道它们可以用作自定义排序字段。这太好了。我在一个帮助列中考虑数值取决于组,但这个答案确实是最好的选择。
  • @FoxfireAndBurnsAndBurns 这实际上是我在 Excel 中自定义列表的主要用途 :-)
猜你喜欢
  • 1970-01-01
  • 2012-02-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多