ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 3130|回复: 15

[求助] 如何取1~5之间的整数?

[复制链接]

TA的精华主题

TA的得分主题

发表于 2010-12-30 10:48 | 显示全部楼层 |阅读模式
各位老师:如何取1~5之间的整数?如果用Int(m / 2)函数的话,怎样去掉1/2的0呢?

TA的精华主题

TA的得分主题

发表于 2010-12-30 10:59 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
m值是多少啊
小的话可以+2

TA的精华主题

TA的得分主题

发表于 2010-12-30 11:00 | 显示全部楼层
原帖由 gwfzh 于 2010-12-30 10:48 发表
各位老师:如何取1~5之间的整数?如果用Int(m / 2)函数的话,怎样去掉1/2的0呢?

是去掉1/2的“0”和“.”吧?

TA的精华主题

TA的得分主题

发表于 2010-12-30 11:01 | 显示全部楼层
把附件传上来看看,听的不大明白

TA的精华主题

TA的得分主题

发表于 2010-12-30 11:03 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2010-12-30 11:08 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2010-12-30 11:28 | 显示全部楼层
回各位老师!就是用如何brr(2 * (Int((m) / 2)), r) 取得数组brr的4,6,8,10偶数行数组?
For m = 2 To 10
    For r = 1 To k '
        brr(2 * (Int(m / 3)) + 3, r) = arrt(2, r) - arrt(Int(m / 3) + 4, r) '取完整数、准确数、一致数、及时数
    brr(2 * (Int((m) / 2)), r) = brr(2 * (Int(m / 3)) + 3, r) / arrt(2, r) * 100  '计算各率
    next r
next m

TA的精华主题

TA的得分主题

发表于 2010-12-30 11:47 | 显示全部楼层
原帖由 gwfzh 于 2010-12-30 11:28 发表
回各位老师!就是用如何brr(2 * (Int((m) / 2)), r) 取得数组brr的4,6,8,10偶数行数组?
For m = 2 To 10
    For r = 1 To k '
        brr(2 * (Int(m / 3)) + 3, r) = arrt(2, r) - arrt(Int(m / 3) + 4, r ...

你这不扯呢吗?直接step 2呀

TA的精华主题

TA的得分主题

 楼主| 发表于 2010-12-30 13:23 | 显示全部楼层
原帖由 excelflower 于 2010-12-30 11:47 发表

你这不扯呢吗?直接step 2呀

不是又要建立一个循环吗?现传上代码和附件,请老师更正!
在下面程序中如何用粉红色语句部分取代砖红色语句部分?即如何用brr(2 * (Int((m) / 2)), r) 取得数组brr的4,6,8,10偶数行数组:具体要求见附件问题三: 漏报分类统计123.rar (28.18 KB, 下载次数: 6)
Sub justtest4() '问题三
    Dim dic, arr, i&, j&, k&, t&, m&, n&, x&, y&, arrt(), arrre(), brr()
    Set dic = CreateObject("scripting.dictionary")
    t = Sheet1.Cells(Rows.Count, "f").End(3).Row - 3
    arr = Sheet1.Cells(4, "b").Resize(t, 20).Value
    For i = 1 To t '
        If dic.exists(arr(i, 1)) Then
            j = dic(arr(i, 1))
            arrt(2, j) = arrt(2, j) + 1        '统计各单位抽查的例数
            If arr(i, 14) <> "" Then arrt(3, j) = arrt(3, j) + 1    '如果不及时
            If arr(i, 17) <> "" Then arrt(4, j) = arrt(4, j) + 1    '如果是抽查
            If arr(i, 18) <> "" Then arrt(5, j) = arrt(5, j) + 1    '如果不完整
            If arr(i, 19) <> "" Then arrt(6, j) = arrt(6, j) + 1    '如果不准确
            If arr(i, 20) <> "" Then arrt(7, j) = arrt(7, j) + 1    '如果不一致
        Else: k = k + 1: ReDim Preserve arrt(1 To 7, 1 To k + 1): dic.Add arr(i, 1), k    '如果单位第一次出现,则
            '添加到字典项目,同时汇总记录数组也扩展一位,同时定义动态数组,用来返回汇总数组:注意K标识位的运用
            arrt(1, k) = arr(i, 1): arrt(2, k) = 1    '同时对该单位赋值,人数初始化1
            'If arr(i, 17) = "" Then arrt(3, k) = 1 '如果该行单位抽查卡片为空,人数初始化1
            If arr(i, 14) <> "" Then arrt(3, k) = 1:    '如果不及时,人数初始化1
            If arr(i, 17) <> "" Then arrt(4, k) = 1    '如果是抽查,人数初始化1
            If arr(i, 18) <> "" Then arrt(5, k) = 1    '如果不完整,人数初始化1
            If arr(i, 19) <> "" Then arrt(6, k) = 1    '如果不准确,人数初始化1
            If arr(i, 20) <> "" Then arrt(7, k) = 1    '如果不一致,人数初始化1
        End If
    Next i '进入循环下一次
        ReDim Preserve brr(1 To 10, 1 To k + 1):
        For m = 2 To 10
    For r = 1 To k '
              brr(2 * (Int(m / 3)) + 3, r) = arrt(2, r) - arrt(Int(m / 3) + 4, r) '取得完整数、准确数、一致数、及时数
        'brr(2 *(QUOTIENT(m,2)), r) = brr(2 * (Int(m / 3)) + 3, r) / arrt(2, r) * 100 '准确率
        brr(2 * (Int((m) / 2)), r) = brr(2 * (Int(m / 3)) + 3, r) / arrt(2, r) * 100  '取得完整率、准确率、一致率、及时率
        brr(2 * (Int(Rnd(m) * 5 + 1)), r) = brr(2 * (Int(m / 3)) + 3, r) / arrt(2, r) * 100 '准确率
        brr(1, r) = arrt(1, r)   '上报单位数
        brr(2, r) = arrt(2, r)   '抽卡数arrt(4, j)
       ' brr(3, r) = arrt(2, r) - arrt(5, r)   '完整数
       ' brr(4, r) = brr(3, r) / arrt(2, r) * 100 '完整率或除以brr(2,r)
        'brr(5, r) = arrt(2, r) - arrt(6, r)   '准确数
        'brr(6, r) = brr(5, r) / arrt(2, r) * 100 '准确率
        'brr(7, r) = arrt(2, r) - arrt(7, r)   '一致数
        'brr(8, r) = brr(7, r) / arrt(2, r) * 100 '一致率
        'brr(9, r) = arrt(2, r) - arrt(3, r)   '及时上报数
        'brr(10, r) = brr(9, r) / arrt(2, r) * 100 '及时率
    Next r
    Next m
    Set dic = Nothing '清空字典内存
    j = Int(k / 2) + IIf(k Mod 2, 1, 0) '返回依实际汇总格式的行数:IIf(k Mod 2, 1, 0) 如果是偶数取1否则取0
    ReDim arrre(1 To j, 1 To 6)  '定义汇总格式数组,与表格相符j*6的表格
    For i = 1 To k Step 2   '在汇总数组中循环,STEP2是因为汇总格式为两列返回。
        x = x + arrt(2, i) + arrt(2, i + 1) '累加总人数
        y = y + arrt(3, i) + arrt(3, i + 1) '累加总漏人数:
        m = (i + 1) / 2 '返回汇总数组对应的汇总格式数组arrre(m, t + 1)对应的列
        For t = 0 To 3 Step 3 '因为一条记录三列,所以STEP3.只有两列,所以只循环两次
            n = i + t / 3 '返回汇总格式数组对应的汇总数组的列数[这里因为一行有两条记录,所以为t/3返回0,1]
            arrre(m, t + 1) = arrt(1, n): arrre(m, t + 2) = arrt(2, n) '对不需判断的直接赋值
            If arrt(3, n) <> "" Then '对漏报人数进行判断,如果没有就对应第三列返回空,如果有,就进行百分比运算。
            arrre(m, t + 3) = arrt(3, n) & "(" & Format(arrt(3, n) / arrt(2, n), "0.00%") & ")"
            End If
        Next t
    Next i
    With Sheet2
        .Range("a25:j" & Rows.Count).ClearContents '清除数据,避免影响
        .Cells(25, 1).Resize(j, 6) = arrre '对区域赋值汇总格式数组
        .Cells(44, 1).Resize(UBound(brr, 2), 10) = Application.Transpose(brr) '对区域赋值汇总格式数组
        With .Cells(j + 5, 4) '表尾的合计行。
            .Value = "合计"
            .Offset(0, 1).Value = x '表尾的合计行赋值。
            .Offset(0, 2).Value = y
        End With
        .Activate
    End With
    MsgBox "统计结束."
End Sub

[ 本帖最后由 gwfzh 于 2010-12-30 13:30 编辑 ]

TA的精华主题

TA的得分主题

发表于 2010-12-30 11:58 | 显示全部楼层
楼上说得很有道理.
发觉楼上说话方式很有趣.呵呵
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-10-4 02:36 , Processed in 0.039911 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

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