0

我将这些分组与我在一个列中使用的一些人口数据(称之为 Data1):

10 至 14 岁  
15至17岁  
18 岁和 19 岁  
20年  
21 年  
22 至 24 岁  
25 至 29 岁  
30 至 34 岁  
35 至 39 岁  
...  
85岁及以上
全部的

而且我还有另一条数据(称为 Data2)我正在使用它而不是分组,只是按年龄从 1 到 100 的人口。

我需要将data2分组到与data1相同的分组中,

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

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

4

3 回答 3

1

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

您可以通过数组公式将原始年龄数据移动到绑定中

=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
于 2012-07-23T18:15:48.790 回答
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")

ETC...

于 2012-07-23T20:34:45.230 回答
0

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

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

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

于 2012-07-23T17:51:35.547 回答