ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 使代码能够忽略数据区域中间的空白单元格进行计算

[复制链接]

TA的精华主题

TA的得分主题

发表于 2018-9-10 22:10 来自手机 | 显示全部楼层
本帖最后由 lss001 于 2018-9-10 22:59 编辑

<<<<<>>>>>

TA的精华主题

TA的得分主题

发表于 2018-9-10 22:11 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
lss001 发表于 2018-9-10 22:09
根据我所知,自定过程大多情况优于自定函数
函数面向初级用户,过程一般面向中高级用户

再次感谢老师解疑释惑!

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-9-11 19:53 | 显示全部楼层
lss001 发表于 2018-9-10 22:09
根据我所知,自定过程大多情况优于自定函数
函数面向初级用户,过程一般面向中高级用户

老师:自定义函数COUNTIFZQ很好,比函数公式快多了!但面对数据量特别大、工作表里有十几处以上需要用到COUNTIFZQ时,就有点力不从心了,卡得不行。所以再次在论坛http://club.excelhome.net/thread-1435322-1-1.html  求助sub过程解决。麻烦您关注一下。谢啦!

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-9-12 05:39 | 显示全部楼层
lss001 发表于 2018-9-10 13:13
简化代码!!!
Function COUNTIFZQ(qy As Range, zq, tj, Optional x = 0)
     Application.Volatile

老师:按运算规则要求:当第四参数为0时,只计算并显示已满周期的G列数据;当第四参数为1时,计算并显示所有已满和未满周期的G列数据
但是,还有一个例外,就是:当数据源的数据总数,恰好为每周期指定间隔行号的整倍数时,无论公式第四参数是0或者1,最后一个周期的计算结果都应该显示在同一行上才符合运算规则。请看截图: 20180912051707.png




   例如:G列最后行号是G3的73588,则数据总数是73588-4【表头4行】=73584;除以每周期指定行号K1的84,正好等于876【没有余数】,加上表头4行,等于880.所以,无论第四参数K2指定为0或者1,计算结果的最后一行,都应该显示在I880:K880那一行中。但实际上只显示到I879:K879,少了一行。

    还得麻烦老师完善代码里的这一点意外。先谢谢了!

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-9-12 08:01 | 显示全部楼层
lss001 发表于 2018-9-10 13:13
简化代码!!!
Function COUNTIFZQ(qy As Range, zq, tj, Optional x = 0)
     Application.Volatile

老师:我不会VBA代码,只知道用函数公式来表示:当指定K2为0时,I:K的最后行号=4+INT((G3-4)/K1)  ;
                                 当指定K2为1时,I:K的最后行号=4+INT((G3-4)/K1)+SIGN(MOD(G3-4,K1))

这样就能始终显示正确的计算结果。

TA的精华主题

TA的得分主题

发表于 2018-9-12 10:24 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
lss001 发表于 2018-9-10 13:13
简化代码!!!
Function COUNTIFZQ(qy As Range, zq, tj, Optional x = 0)
     Application.Volatile

恳请老师按54、55楼的要求修改和完善代码。

TA的精华主题

TA的得分主题

发表于 2018-9-12 11:40 来自手机 | 显示全部楼层
13782671637 发表于 2018-9-12 10:24
恳请老师按54、55楼的要求修改和完善代码。

详细见45楼代码!

评分

2

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-9-12 12:04 | 显示全部楼层
lss001 发表于 2018-9-12 11:40
详细见45楼代码!

已验证,显示的计算结果准确无误!谢谢老师!

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-9-16 18:43 | 显示全部楼层
本帖最后由 玉阳山人 于 2018-9-17 08:01 编辑
lss001 发表于 2018-9-10 13:13
简化代码!!!

老师:我想把这个代码加载宏,应用到所有工作簿中去。但需要计数的数据源有的在《总表》里,有的在《组三》、《组六》或其他工作表里;更多的是一个工作簿中有《总表》,还有《组三》、《组六》或其他工作表。但是许多时候,需要进行统计的数据源混杂在《总表》、《组三》、《组六》或其他工作表里。

   假如,如果我需要对《组三》里的J列数据进行计数统计:
        在开头为数字的统计表的K2输入表名“组三”,K3输入“J”,代码能不能执行计算?代码里带红色填充的“总表”会不会有妨碍?如果数据源不在《总表》里,需不需要修改下面带红色填充的表名?如果需要修改表名,那就不能加载宏了!
        怎样才能设置代码里的《总表》为当前工作表?这样,当点击《总表》里的宏按钮,那些数字开头的统计表就会显示《总表》里的统计项目;当点击《组三》里的宏按钮,那些数字开头的统计表就会显示《组三》里的统计项目
    但最好的办法是:当点击《总表》里的宏按钮时,让那些数字开头的统计表,根据第二行指定的表名和第三行指定的列标,自动执行对应表名、列标的计数统计。

Sub 周期条件计数()
Application.ScreenUpdating = False
    tms = Timer
    Dim ar(), br(), cr(), dr(), fr(), mySh As Worksheet, myR As Range, myC As Range, _
    myS$, myT$, myA$, myB$, a&, b&, c&, d&, e&, f&, g&, i&, j&, k&, p&, q&, u&, v&, x&
    ar = Range(Sheets("总表").Cells(5, 5), Sheets("总表").Cells(Sheets("总表").Cells(1, 8), 16))

                v = .Range(cr(0)(p - 1)).Row: g = Sheets("总表").Cells(v, dr(0)(p - 1)).Column
                f = .Range(cr(0)(p - 1)).Column: b = Sheets("总表").Cells(v, dr(0)(p - 1))
另外,请看截图:
20180917065041.png 20180917065102.png

《总表》的S列是计算显示中位号的,而统计表《3 结构》的N:Q列是与之对应的;为什么点击《总表》里的宏按钮,唯独《总表》S列的计算结果,在统计表《3 结构》的N:Q列显示的全部是空白呢?
   怎样才能使数字开头的统计表,能够对《总表》I列右边I:XFD之间任意列的项目进行统计这样,就不会遗漏上边S列的统计了。

0917.zip (947.6 KB, 下载次数: 6)



TA的精华主题

TA的得分主题

发表于 2018-9-16 18:59 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
microyip 发表于 2018-9-8 10:51
这里遇到空就退出计算,你代码设置的呀

请教论坛的老师ado面对csv文件中带有=“”该如何操作?
http://club.excelhome.net/thread-1436122-1-1.html
(出处: ExcelHome技术论坛)
老师,能否看下我的帖子,这个问题,研究两天了,难道vba+ado+sql完成不了吗?
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2025-1-14 19:20 , Processed in 0.026266 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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