Excel - 将Ages组合为预定义的类别

时间:2012-07-23 17:41:24

标签: excel vba grouping excel-formula

我已经将这些分组包含在一列中使用的一些人口数据(将其称为Data1 ):

10 to 14 years  
15 to 17 years  
18 and 19 years  
20 years  
21 years  
22 to 24 years  
25 to 29 years  
30 to 34 years  
35 to 39 years  
...  
85 years and over
Total

我还有另一段数据(称之为Data2 )我正在使用而不是分组只是按年龄从1到100。

我需要将data2分组到与data1,

相同的分组中

我开始使用Excel公式(使用IF语句),但有24个不同的年龄组,所以我很快就放弃了。

使用公式/ vba /其他方式有更简单的方法吗?

3 个答案:

答案 0 :(得分:1)

如果我理解您的数据,似乎Data2是一个原始的年龄列表,Data1是一个分箱数据。

您可以通过数组公式

将原始年龄数据移动到bind中
=FREQUENCY(<bins>,<Data2>)

你的垃圾箱将在哪里

10
15
18
20
21
22
25
30
35
40
45
50
55
60
65
70
75
80
85

另外你可以尝试这个UDF,如果我的第一个猜测不是你想要的......

Public Function Between(inputCell As Range, twoColBetweenRage As Range, outputLabel As Range)

    If twoColBetweenRage.Rows.Count <> outputLabel.Rows.Count Then
        Err.Raise 12345, "", "Input ranges are not equally sized"
        Exit Function
    End If

    Dim r As Integer, inputValue As Double
    inputValue = inputCell.Value
    For r = twoColBetweenRage.Row To twoColBetweenRage.Rows.Count
        If twoColBetweenRage(r, 1) <= inputValue And twoColBetweenRage(r, 2) >= inputValue Then
            Between = outputLabel(r, 1)
            Exit Function
        End If
    Next r

    If IsEmpty(Between) Then
        Err.Raise 12345, "", "No value was found"
        Exit Function
    End If

End Function

答案 1 :(得分:0)

如果构建两列查找表,则可以使用简短公式,例如:在Y2中,按每个范围的下限按升序排列,例如, Y2 10 ,Y3 15 ,Y4等 18 ,然后在Z列的相应行中,您可以放置​​组文本,例如在Z2 “10至14年”在Z3,“15至17年”等。

现在,对于A1中的特定年龄,您可以使用此公式获得正确的组

=LOOKUP(A1,$Y$2:$Z$25)

答案 2 :(得分:0)

如果您运行的是Excel 2007或更高版本,则可以使用COUNTIF

10至14年=COUNTIF(Data2,">=10",Data2,"<=14")
15至17年=COUNTIF(Data2,">=15",Data2,"<=17")
18和19年=COUNTIF(Data2,">=18",Data2,"<=19")
20年=COUNTIF(Data2,"=20")
21年=COUNTIF(Data2,"=21")

等等...