2009-09-24 57 views
0

另一列表的顺序排序的范围我有两个表,像这样:通过在Excel

表1

 
    A 
1 FirstPhase 
2 SecondPhase 
3 ThirdPhase 
4 FourthPhase 

表2

 
    A  B 
1 Item1 FirstPhase 
2 Item4 FourthPhase 
3 Item2 SecondPhase 
4 Item3 ThirdPhase 

结果我想在排序后实现:

 
    A  B 
1 Item1 FirstPhase 
2 Item2 SecondPhase 
3 Item3 ThirdPhase 
4 Item4 FourthPhase 

如何根据第一个表中第A列的顺序将第二个表按列B排序?

+0

你不应该把它设置成'Community Wiki',你可能会有更多的输入。我会看看我能弄清楚什么。 – 2009-09-24 21:10:42

+0

那是怎么回事?它不是最终的正常问题之一吗? – 2009-09-25 07:18:40

+0

很多人不会花时间去解决难题,如果他们不会得到任何代表。我现在很埋葬,但我打算继续努力。 – 2009-09-26 05:33:36

回答

3

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

  • 在Excel 2007中,点击Office图标
  • 选择Excel选项 - 流行 - 编辑自定义列表
  • 点击“导入列表,从细胞的范围按钮
  • 选择您的数据,然后按导入按钮回车键
  • 点击
  • 点击确定,然后再次单击OK

用自定义列表进行排序。

  • 选择要排序的数据。
  • 单击主页选项卡上的排序&筛选
  • 选择自定义排序
  • 选择列进行排序
  • 然后下拉的订购,并选择自定义列表
  • 选择自定义列表
  • 点击确定,然后再次单击OK

代码

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 
+0

我看了一下自定义列表,并认为它们只是从您导入的单元格复制而来,并且在这些单元格更改时不会更新。是这样吗? – 2009-09-28 10:56:43

+0

正确,自定义列表在创建后不会更新,无需用户干预。 代码提供了一种解决方法,因为用于创建自定义列表的范围可以更改。 – 2009-09-28 12:24:01

+0

我设法让它工作,谢谢!但是,我使用了'Key1:= Range(“B1”)',并对指定范围进行了排序。 – 2009-10-12 12:29:23