我已经将这些分组包含在一列中使用的一些人口数据(将其称为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 /其他方式有更简单的方法吗?
答案 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")
等等...