2016-08-08 50 views
0

使用Chrome扩展'Webscraper.io',我经常在一个政府网站上追踪更新的项目费用。虽然它的操作非常高效,但它没有按照我提供输入Url的顺序返回数据。甚至更奇怪的是,我每次运行任务时都会选择不同的顺序,即使来源完全相同。假设,如果我跑了5 URL的任务的两倍,输出将是(无特定的随机排序):如何根据我的原始excel表格的排序顺序对excel表格进行排序?

(Day 1) Output (Day 2) Output 
Url 2 $500 Url 3 $478 
Url 4 $867 Url 1 $637 
Url 1 $928 Url 4 $102 
Url 3 $109 Url 5 $942 
Url 5 $208 Url 2 $296 

Image example

这使得并排的数据极其繁琐的任务的不同天侧面对比对我来说。那么,是否有办法根据工作表1的排序顺序对工作表2的列进行排序?按字母顺序排列这两张纸绝对是一种选择,但它打破了我原来的订单(这是明智的部门)。理想情况下,我想将所有日期的B列粘贴到我的原始工作表&,然后比较所做的更改。

+0

对于Excel 2010及以上,这可能是与Power查询更加容易。否则,您可以尝试使用数据透视表。 – Slai

+0

在sheet1的Cell C2中,可以粘贴= VLOOKUP($ A2 Sheet2!A:B,2,FALSE)。然后将单元格C2复制到C3:C6 –

+0

结果的顺序不同,因为这些URL是同时请求的,并且先按任何加载顺序排序。您可以寻找一种方法为每个网址提供单独的请求,或者在扩展中查找将保留订单的设置。 – Slai

回答

0

您可能需要使用Range对象的Sort方法,其OrderCustom参数

Sub SortByUrls() 
    Dim rngToSort As Range, keysToSort As Range 

    With Worksheets("Urls") '<--| change "Urls" with your actual sheet name 
     Set rngToSort = .Range("C2:D6") '<--| range to be sorted 
     Set keysToSort = .Range("C2") '<--| first cell of the column to sort 

     Application.AddCustomList ListArray:=.Range("A2:A6").value '<--| add your sorting custom list as the previous Url names range 

     .sort.SortFields.Clear '<--| clear any preceeding sorting settings 
     rngToSort.sort Key1:=keysToSort, Order1:=xlAscending, header:=xlGuess, _ 
      OrderCustom:=Application.CustomListCount + 1, MatchCase:=False, _ 
      Orientation:=xlTopToBottom, DataOption1:=xlSortNormal 

     Application.DeleteCustomList Application.CustomListCount '<--| delete your sorting custom list 
    End With 
End Sub 
+0

@Avinash:你通过了吗? – user3598756

+0

感谢您的帮助。我是新来的stackoverflow和思考我的问题没有回答。刚刚尝试过,效果很好。再次感谢你。 – Avinash

+0

不客气。一旦你发布了一个问题,一定要定期回来,并检查它,以便可能得到你的答案(人们可能很忙......)并给出适当的反馈。良好的编码! – user3598756

相关问题