如何编写在excel中对此列表进行排序的程序?

时间:2018-01-05 06:30:23

标签: excel sorting

我在问这个问题之前已经使用了搜索功能,之前没有人问过这个问题。

此程序能够对excel中的列表进行排序,然后输出给定规格的最便宜的价格。

注意:我不知道如何在stackoverflow中格式化电子表格,所以我只是链接一个excel文件,希望这不符合规则。

例如,给定此列表(真实数据但删除了电话号码和姓名):example list

因此,如果我自己对此列表进行排序,则需要很长时间。

这就是我手动完成的方法。首先,找到所有的规格,并把最便宜的价格像这样:(注意,pf是部分配备,ff配套齐全.3r2b意味着3间卧室2间浴室)

3r2b ff RM 3500

3r2b pf RM 3200

2 + 1r 2b pf RM 3000

2 + 1r 2b ff RM 3500

2 + 1r 3b ff RM 3000

3 + 1r3b ff RM 5500

4r3b ff RM 4500

然后基于这个现在排序的数据,输出这样的最便宜的价格:

3r2b ff RM 3500

3r2b pf RM 3200

2 + 1r 3b ff RM 3000

4r3b ff RM 4500

因此程序可以通过列表然后对其进行排序。排序完所有数据后,输出应该与我上面的输出相似。

我需要一些关于如何编写这样的程序的一般性想法。一些指针,技术内容,任何事情都会有所帮助。

希望我尽可能清楚地了解我想要实现的目标,如果没有,我会在下面的评论中进一步澄清。

提前致谢。

1 个答案:

答案 0 :(得分:0)

您的第一步应该是恢复文件以包含可排序的数据。到目前为止,您的示例文件包含不一致的格式前进的一种方法可能是首先将数据转换为常规表。这种转换可能受到以下小分割函数的帮助

Function mysplit(r As Range)
  mysplit = split(r, Chr(10))
End Function

此功能可以在表格中引用,输入为4列的矩阵函数(选择四个连续的单元格[c1:f1],输入公式=mysplit(a[1])并提交<cntrl><shift><enter>)。

  1. 将新模块插入Excel工作簿 insert a new module into your Excel workbook

  2. 将新定义的函数引用为单元格范围的矩阵函数 reference the newly defined function as a matrix function for a cell range

  3. (注意公式周围的花括号{= ... }!)

    然后将此公式复制下来,直到捕获完所有数据。

    但是,结果仍然需要手动进一步整理,如下所示(我将结果放在一个新表中,从A列开始):

    A      B        C   D
    --------------------------------
    1283   3r2b     Ff  3700
    1092   2+1r 2b  pf  3000 - 3200
    1283   3r2b     Pf  3500
    1283   3r2b     pf  3500
    1092   2+1r 2b  pf  3000 - 3200
    
    ... following entries still need futher processing ...
    
    Facing Damansara Perdana    2 Rooms + 1 Hobby Room  2 toilets   1099 SQf 
    SIE 1705SF  4R3B    FF  PRICE 6000
    This is my unit 35-2 1700sqft   4r3b    Ff  Price asking 5500 
    1092sf  2+1r 2b     ff  
    1092sf  2+1r3b  Ff  Price 3000 
    Reflection 1099sf   3r+b    Ff  Asking 3.7k Min can go 3.5k only
    rental min 5.5k thks.   .1700sq ft  3+1r3b  fully furnished unit
    1092sf  2+1r 2b     ff  price 3600
    size 1283sf     3r2b    pf  price 3500
    1705sf  Pf  Second preference is to rent at RM 4,500 partly furnished with 1 year term  
    1298sf  3r2b    pf  3300
    size 1092sf     2+1r 2b     pf  price 3000 - 3200 
    size 1092sf     2+1r2b  pf  price 3000 - 3300 
    size 1283sf     3r2b    pf  price 3200
    

    但即使是在我的第一个&#34;处理过的&#34;线条存在缺陷:B列和D列仍然包含格式错误的数据。 B中有复合数据(r和b计数),D列有时包含范围。

    一旦你有一个完全常规的表,对它进行排序将是微不足道的:

    A      B C D   E     F    G
    sf     r x b   state ask  min
    --------------------------------
    1283   3   2   Ff    3700
    1092   2 1 2   pf    3200 3000
    1283   3   2   Pf    3500
    1283   3   2   pf    3500
    1092   2 1 2   pf    3200 3000
    ...
    

    但如果没有定期的一致格式,有意义的排序几乎是不可能的。