【问题标题】:Sorting a range by the order of another list in Excel在 Excel 中按另一个列表的顺序对范围进行排序
【发布时间】:2010-12-01 03:23:11
【问题描述】:

我有两张桌子,像这样:

表 1

一种 1 第一阶段 2 第二阶段 3 第三阶段 4 第四阶段

表 2

甲乙 1 项目1 第一阶段 2 项目 4 第四阶段 3项目2第二阶段 4 项目 3 第三阶段

排序后我想要达到的结果是:

甲乙 1 项目1 第一阶段 2 项目2 第二阶段 3 项目 3 第三阶段 4 项目4 第四阶段

如何按照第一个表中A列的顺序,按列B对第二个表进行排序?

【问题讨论】:

  • 您不应该将此设置为“社区 Wiki”,您可能会获得更多输入。我会看看我能想出什么。
  • 怎么样?它不是在正常问题中结束吗?
  • 很多人如果得不到任何代表,就不会花时间去解决难题。我现在很忙,但我打算继续努力。

标签: excel sorting


【解决方案1】:

第一步是创建一个自定义列表。

  • 在 Excel 2007 中,单击 Office 图标
  • 选择 Excel 选项 - 常用 - 编辑自定义列表
  • 点击“从单元格导入列表”范围按钮
  • 选择您的数据,然后按 Enter 键
  • 点击导入按钮
  • 单击“确定”,然后再次单击“确定”

使用自定义列表进行排序。

  • 选择要排序的数据。
  • 单击“主页”选项卡和“排序和筛选”
  • 选择自定义排序
  • 选择要排序的列
  • 然后下拉订单并选择自定义列表
  • 选择您的自定义列表
  • 单击“确定”,然后再次单击“确定”

在代码中

Sub MakeCustomListAndSort()

Application.AddCustomList ListArray:=Sheets("Sheet1").Range("A1:A4"), ByRow:=True
'Create the custom list

ActiveWorkbook.Worksheets("Sheet2").Range("A1:B4").Sort Key1:=Range("B1:B4"), _
 Order1:=xlAscending, Header:=xlGuess, _
 OrderCustom:=Application.CustomListCount + 1, MatchCase:=False, _
 Orientation:=xlTopToBottom, DataOption1:=xlSortNormal
'Sort with latest custom list

Application.DeleteCustomList Application.CustomListCount
'Delete the latest custom list

End Sub

【讨论】:

  • 我查看了自定义列表,并认为它们仅从您导入的单元格中复制而来,并且在这些单元格更改时不会更新。是这样吗?
  • 正确,自定义列表在创建后不会在没有用户干预的情况下更新。该代码提供了一种解决方法,因为可以更改用于创建自定义列表的范围。
  • 我设法让它工作了,谢谢!但是,我使用了Key1:=Range("B1"),而是在命名范围内进行了排序。
猜你喜欢
  • 2022-01-03
  • 2012-08-27
  • 2020-09-29
  • 2019-07-30
  • 1970-01-01
  • 2015-06-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多