Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 2513|回复: 1

VBA判断数字在第几个区间

[复制链接]
发表于 2017-1-23 22:20 | 显示全部楼层 |阅读模式
本帖最后由 laoau138 于 2017-1-24 17:01 编辑

VBA判断数字在第几个区间



第一:    E1控制   B列从下向上倒数多少行开始计算  
由于E1=5,所以B列从下往上倒数5行,(就从B6开始计算,具体计算规则过程看图片)

第二:   主要计算B列累计区间数
   先把39个数字分4个区间, 第一区间1-10;  第二区间11-20;  第三区间21-30;   第四区间31-39;
  例如 B6=26  "显然在第3区间"
    由于从B6开始  所以累计区间数从B6开始计算, 累计区间数等于本行所在区间数   加前面行数所在区间数
主要搞清: B6行数字在四个划分区间的第几个区间    ;本行累计区间就是   把上一行区间数+本行的区间数     
例如:  要计算B7行累计区间   B7行累计区间=B6行所在区间+B7行所在区间=3+2=5   其它如此类推

第三:计算前三行B6:B8累计区间平均值,(B6累计+B7累计+B8累计)/3
    (3+5+9)/3=5.6
    计算后三行B8:B10累计区间平均值,(B8累计+B9累计+B10累计)/3
    (9+12+16)/3=12.3

第四:  计算五行累计和平均值,(B6累计+B7累计+....B10累计)/5
       (3+5+9+12+16)/5=9

第五:           第六行所在区间数=第六行累计区间数-第五行累计区间数=19-16=3
     第六行所在区间数等于3,采取前面减1等于2,后面加1等于3
     所以第六行所在区间数2  3  4  结果保存单元格D16:F16 .............主要计算这个第六行所在区间数  

VBA判断数字在第几个区间.jpg

VBA判断数字在第几个区间.rar

86.95 KB, 下载次数: 2

 楼主| 发表于 2017-1-24 21:46 | 显示全部楼层
Sub main()
    a1 = [e1]
    rowMAX = Cells(Rows.Count, 2).End(3).Row
    row1 = rowMAX - a1 + 1
   arr = Range(Cells(row1, 2), Cells(rowMAX, 2))
ReDim brr(1 To UBound(arr), 1 To 2)
    For i = 1 To UBound(brr)
       Select Case arr(i, 1)
            Case 1 To 10
            brr(i, 1) = 1
               Case 11 To 20
               brr(i, 1) = 2
                   Case 21 To 30
                   brr(i, 1) = 3
                       Case 31 To 39
                       brr(i, 1) = 4
        End Select
        brr(i, 2) = brr(i, 1) + x
        x = brr(i, 2)
        ha5 = ha5 + brr(i, 2)
        If i <= 3 Then qia3 = qia3 + brr(i, 2)
        If i >= 3 Then ho3 = ho3 + brr(i, 2)
    Next
    ha6 = Round(1.5 * (ho3 - qia3) / 3 + ha5 / 5, 0)
    haq6 = ha6 - brr(UBound(brr), 2)
    [d16:f16] = Array(haq6 - 1, haq6, haq6 + 1)
   
End Sub
Sub main2()
    a1 = [e1]
    rowMAX = Cells(Rows.Count, 2).End(3).Row
    row1 = rowMAX - a1 + 1
    Cells(row1, 20) = Cells(row1, 2).Value
    Dim 合计数
    For i = row1 To rowMAX
        Cells(i, 20) = Cells(i - 1, 20) + Cells(i, 2)
        合计数 = 合计数 + Cells(i, 20)
    Next
    合计数 = 合计数 / a1
    前三平均 = (Cells(row1, 20) + Cells(row1 + 1, 20) + Cells(row1 + 2, 20)) / 3
    后三平均 = (Cells(rowMAX, 20) + Cells(rowMAX - 1, 20) + Cells(rowMAX - 2, 20)) / 3
   
    [e5] = 合计数 + 后三平均 - 前三平均

   
End Sub
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-26 08:18 , Processed in 0.262305 second(s), 10 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表