Excel先进的排序 - 返回低/高值

时间:2013-01-06 22:52:35

标签: excel vba sorting

我正在尝试对从csv文件导入的数据进行排序。数据如下:

Columns
 A | B
--------
t1 | 1
t3 | 9
t1 | 2
t2 | 5
t1 | 1
t3 | 13
t1 | 3
t3 | 11
t2 | 4
t2 | 7
t3 | 10
t3 | 10

我希望输出类似于:

    Columns
 D  |  E  |  F
----------------
t1  |  1  |  3
t2  |  4  |  7
t3  |  9  |  13

说明:基本上我需要做的是为A列中的每个不同值找到B列中的最低值和最高值,并将它们整齐地列出,如第二个示例所示。

之前我曾与VBA合作,所以如果必须通过VBA完成,那很好。我只是不知道如何完成这项任务。任何帮助,将不胜感激。

编辑:忘记提及,如果要使任务更简单,如果我必须根据col A按字母顺序手动对数据进行排序(因此将相同的值放在一起),那就很好了。

1 个答案:

答案 0 :(得分:1)

我同意@chrisneilsen认为数据透视表是最好的选择。如果您设置使用公式,则可以尝试使用以下(都作为数组输入 - Ctrl+Shift+Enter):

在单元格E1中,它代表最小值:

=MIN(IF($A$1:$A$12=D1,1,MAX($B$1:$B$12)+1)*$B$1:$B$12)

在单元格F1中,它代表最大值:

=MAX(IF($A$1:$A$12=D1,1,MIN($B$1:$B$12)-1)*$B$1:$B$12)

一般的想法是检查列A中的哪些值等于您的目标值(列D)。结果将是一个1的数组,其中有一个匹配项,并以MIN为例,列的最大值为1.这样做是因为我们要设置这等于在当前设置中可能达到的值,因此最大值+ 1将确保MIN将返回合法的值。

enter image description here

这是使用Excel 2007的数据透视表。要创建,向数据添加列标题,选择数据,然后在功能区中单击Insert -> Pivot Table。在对话框中,您决定放置它的位置(通常放在新工作表中,因此您可以保留默认值 - 我将其保留在同一工作表中以用于说明目的)。从那里,您可以通过拖动每个字段来安排它,使其与图片匹配。对于Max/Min字段,只需将Value字段拖到Values部分两次即可。然后,在实际数据透视表中,您可以右键单击列中的某个值,然后选择Summarize Data By -> Min以按每个键的最小值汇总:

enter image description here