Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何编写一个程序在excel中对该列表进行排序?_Excel_Sorting - Fatal编程技术网

如何编写一个程序在excel中对该列表进行排序?

如何编写一个程序在excel中对该列表进行排序?,excel,sorting,Excel,Sorting,我在问这个问题之前使用过搜索功能,以前没有人问过这个问题 该程序能够在excel中对列表进行排序,然后输出给定规格的最便宜价格。 注意:我不知道如何在stackoverflow中格式化电子表格,所以我将只链接一个excel文件,希望这不会违反规则 例如,给定此列表(真实数据,但删除了电话号码和姓名): 因此,如果我亲自整理这份清单,那将需要很长时间 这是我手动操作的方式。首先,找到所有的规格,然后像这样列出最便宜的价格:(注意,pf部分配备家具,ff全部配备家具。3r2b表示3间卧室2间浴室)

我在问这个问题之前使用过搜索功能,以前没有人问过这个问题

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

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

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

因此,如果我亲自整理这份清单,那将需要很长时间

这是我手动操作的方式。首先,找到所有的规格,然后像这样列出最便宜的价格:(注意,pf部分配备家具,ff全部配备家具。3r2b表示3间卧室2间浴室)

3r2b ff 3500 RM

3r2b pf 3200室

2+1r 2b pf 3000室

2+1r 2b固定框架3500室

2+1r 3b ff 3000室

3+1r3b ff 5500室

4r3b ff 4500令吉

然后根据现在排序的数据,输出最便宜的价格,如下所示:

3r2b ff 3500 RM

3r2b pf 3200室

2+1r 3b ff 3000室

4r3b ff 4500 RM

因此,程序能够遍历一个列表,然后对其进行排序。在对所有数据进行排序之后,输出应该与上面的一样

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

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


提前感谢。

您的第一步应该是重新组织文件以包含可排序数据。到目前为止,示例文件包含不一致的格式。向前推进的一种方法可能是首先将数据转换为常规表。下面的小拆分函数可能有助于此转换

Function mysplit(r As Range)
  mysplit = split(r, Chr(10))
End Function
通过将此函数作为4列的矩阵函数输入(选择四个连续单元格[c1:f1],输入公式
=mysplit(a[1])
,然后随
提交),可以在表中引用此函数

  • 在Excel工作簿中插入新模块

  • 将新定义的函数引用为单元格范围的矩阵函数

  • (注意公式周围的花括号
    {=…}

    然后向下复制此公式,直到捕获所有数据

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

    但即使在我的第一行“已处理”中也存在不足之处: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
    ...
    

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

    这是非常有用的,先生,所以首先我需要使一切都一致和规则。但是先生,你能再解释一下mysplit函数吗?这一点我不太明白。@johndoe666,请看一下我刚刚添加到帖子中的图片。它们说明了如何创建和使用函数
    mysplit()
    。但是,正如我已经解释过的:重组工作的最大部分仍然需要手动交互……手动重组对我来说很好,谢谢您的时间和帮助,先生!
    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
    ...