麻烦帮我编程一下以下数据第一组数据:在A2-A151产生从1-150编号第二组数据:在B2-B150将上述1-150个数分成2组(第一组共100人,用A表示,第二组50人用B表示),第三组数据:在C2-C151产生第三组数
来源:学生作业帮助网 编辑:六六作业网 时间:2025/02/01 16:51:36
麻烦帮我编程一下以下数据第一组数据:在A2-A151产生从1-150编号第二组数据:在B2-B150将上述1-150个数分成2组(第一组共100人,用A表示,第二组50人用B表示),第三组数据:在C2-C151产生第三组数
麻烦帮我编程一下以下数据
第一组数据:在A2-A151产生从1-150编号
第二组数据:在B2-B150将上述1-150个数分成2组(第一组共100人,用A表示,第二组50人用B表示),
第三组数据:在C2-C151产生第三组数据:将A组100个病人分成甲乙丙丁小组,其中甲占30%,乙占40%,丙占20%,丁占10%,将B组也分成甲乙丙丁小组,其中甲占10%,乙占20%,丙占40%,丁占30%,甲乙丙丁是随机分配给每个病人的.
第四组数据:要D2-D151产生150个年龄数字.要求:所有150个人年龄范围18-75,其中18-40占30%,40-60占50%,60-75占20%.
第五组数据:给每个病人产生一个生存数字,要求:A组范围6-70,其中6-12占30%,12-24占30%,24-36占20%,36-48占10%,48-70占10%.B组范围6-72,且B组均值要比A组大6-12,6-12占20%,12-24占30%,24-36占30%,36-48占10%,48-70占10%.数据显示在E列.
第六组数据:根据第五组数字在F列产生第六组数据,要求:如果A组中,数值位于6-24内时,50%赋值X,50%赋值Y,如果位于24-48时,30%赋值X,70%赋值Y,如果超过48,则10%赋值X,90%赋值Y.在B组中,数值位于6-24内时,40%赋值X,60%赋值Y,如果位于24-48时,20%赋值X,80%赋值Y,如果超过48,则5%赋值X,95%赋值Y.
一定要用VBA编程.
麻烦帮我编程一下以下数据第一组数据:在A2-A151产生从1-150编号第二组数据:在B2-B150将上述1-150个数分成2组(第一组共100人,用A表示,第二组50人用B表示),第三组数据:在C2-C151产生第三组数
Sub create(n, min1, max1, min2, max2, col)
For i = 1 To n
Do
m = Int(Rnd * (max1 - min1 + 1) + min1)
If Cells(m, col) = "" Then Exit Do
Loop
If min2 = max2 Then
s = min2
Else
s = Str(Int(Rnd * (max2 - min2 + 1) + min2))
End If
Cells(m, col) = s
Next
End Sub
Sub createf(n, min1, max1, min2, max2)
For i = 1 To n
Do
m = Int(Rnd * (max1 - min1 + 1) + min1)
If Cells(m, "F") <> "X" And Cells(m, "E") >= min2 And Cells(m, "E") <= max2 Then Exit Do
Loop
Cells(m, "F") = "X"
Next
End Sub
Sub main()
Randomize
Dim avg1, avg2
For i = 2 To 151
Cells(i, "A") = i - 1 '第一组数据
If i < 102 Then
Cells(i, "B") = "A" '第二组数据,前100为"A"
Else
Cells(i, "B") = "B" '剩余为"B"
End If
Cells(i, "C") = ""
Cells(i, "D") = ""
Cells(i, "E") = ""
Cells(i, "F") = "Y"
Next
create 0.3 * 100, 2, 101, "甲", "甲", "C" '第三组数据A组
create 0.4 * 100, 2, 101, "乙", "乙", "C"
create 0.2 * 100, 2, 101, "丙", "丙", "C"
create 0.1 * 100, 2, 101, "丁", "丁", "C"
create 0.1 * 50, 102, 151, "甲", "甲", "C" '第三组数据B组
create 0.2 * 50, 102, 151, "乙", "乙", "C"
create 0.4 * 50, 102, 151, "丙", "丙", "C"
create 0.3 * 50, 102, 151, "丁", "丁", "C"
create 0.3 * 150, 2, 151, 18, 40, "D" '第四组数据
create 0.5 * 150, 2, 151, 41, 60, "D"
create 0.2 * 150, 2, 151, 61, 75, "D"
create 0.3 * 100, 2, 101, 6, 12, "E" '第五组数据A组
create 0.3 * 100, 2, 101, 13, 24, "E"
create 0.2 * 100, 2, 101, 25, 36, "E"
create 0.1 * 100, 2, 101, 37, 48, "E"
create 0.1 * 100, 2, 101, 49, 70, "E"
avg1 = Application.WorksheetFunction.Average(Range("E2:E101")) '计算E列A组平均值
Do
create 0.2 * 50, 102, 151, 6, 12, "E" '第五组数据B组
create 0.3 * 50, 102, 151, 13, 24, "E"
create 0.3 * 50, 102, 151, 25, 36, "E"
create 0.1 * 50, 102, 151, 37, 48, "E"
create 0.1 * 50, 102, 151, 49, 70, "E"
avg2 = Application.WorksheetFunction.Average(Range("E102:E151")) '计算E列B组平均值
Loop Until avg2 - avg1 >= 2 And avg2 - avg1 <= 12 '使B组均值大于A组2-12
Dim sum11, sum12, sum21, sum22, sum31, sum32
With Application.WorksheetFunction
sum11 = .CountIf(Range("E2:E101"), "<24")
sum12 = .CountIf(Range("E102:E151"), "<24")
sum31 = .CountIf(Range("E2:E101"), ">48")
sum32 = .CountIf(Range("E102:E151"), ">48")
sum21 = 100 - sum11 - sum31
sum22 = 50 - sum12 - sum32
End With
createf sum11 * 0.5, 2, 101, 6, 23 '第六组数据
createf sum21 * 0.3, 2, 101, 24, 48
createf sum31 * 0.1, 2, 101, 49, 100
createf sum12 * 0.4, 102, 151, 6, 23
createf sum22 * 0.2, 102, 151, 24, 48
createf sum32 * 0.05, 102, 151, 49, 100
End Sub