ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 根据表一的代码,增加序号区域参数,创建适用于表二计数统计的自定义函数

[复制链接]

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-2-13 08:52 | 显示全部楼层
liulang0808 发表于 2019-2-12 21:24
差不多明白楼主的意图了,附件代码供参考吧

123.gif

版主老师:弱弱问一句,能不能在自定义函数XHCOUNTIF的代码里增加一个额外的统计功能--即:当参数tj指定为"MODE"时,显示如N列各周期出现次数最多的数据名称?

如果可以,稍后我就把"MODE"的统计规则上传。

TA的精华主题

TA的得分主题

发表于 2019-2-13 08:54 | 显示全部楼层
WYS67 发表于 2019-2-13 08:52
版主老师:弱弱问一句,能不能在自定义函数XHCOUNTIF的代码里增加一个额外的统计功能--即:当参数tj ...

没有看他明白,如果取最大值,可以直接调用表格公式的,楼主看看是不是这个意思的

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-2-13 08:57 | 显示全部楼层
liulang0808 发表于 2019-2-13 08:54
没有看他明白,如果取最大值,可以直接调用表格公式的,楼主看看是不是这个意思的

是求:返回逐个周期内出现次数最多的那个数据的名称。

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-2-13 09:09 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
liulang0808 发表于 2019-2-13 08:54
没有看他明白,如果取最大值,可以直接调用表格公式的,楼主看看是不是这个意思的

如果参数tj指定的不是数据区域里的指定数据,而是指定了MODE,则显示如N列那样--返回逐个周期内出现次数最多的那个数据的名称

TA的精华主题

TA的得分主题

发表于 2019-2-13 09:53 | 显示全部楼层
WYS67 发表于 2019-2-13 09:09
如果参数tj指定的不是数据区域里的指定数据,而是指定了MODE,则显示如N列那样--返回逐个周期内出现次数 ...

大概看明白了,一个自定义表格函数,楼主要扩展成什么样子呢?
如果要将这个函数应用到N列的话,那么就需要对0,1,2分别统计,然后比较大小进行反馈结果的。
还是建议增加其他公式处理吧,个人感觉没有必要再扩展了,不过楼主可以自行尝试练手看看吧

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2019-2-13 10:02 | 显示全部楼层
liulang0808 发表于 2019-2-13 09:53
大概看明白了,一个自定义表格函数,楼主要扩展成什么样子呢?
如果要将这个函数应用到N列的话,那么就 ...

我就是问问可行不可行而已。感谢版主老师直言相告。

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-2-23 13:22 | 显示全部楼层
本帖最后由 WYS67 于 2019-2-23 14:54 编辑
liulang0808 发表于 2019-2-12 21:24
差不多明白楼主的意图了,附件代码供参考吧

老师:您写的29楼的代码,没有加载宏时,运行都正常;但把代码复制粘贴进一个专门用于加载宏的工作簿,另存为 Excel 加载宏((*.xlam)  后,每次打开下载自29楼的文件,就会出现如截图所示的错误: 1.gif



老师:这是怎么回事。如何解决?

经过反复验证,觉得是最上边 Option Explicit  的问题,删除了  Option Explicit  后,已经能够顺利打开工作表。

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-3-11 12:26 | 显示全部楼层
本帖最后由 WYS67 于 2019-3-11 15:43 编辑
liulang0808 发表于 2019-2-12 21:24
差不多明白楼主的意图了,附件代码供参考吧

1.gif

版主老师:请看截图,当每周期间隔序号的N1指定某些数值时,最后那个周期的下面,L:N列有时会出现连续的“1”,是什么原因造成的?

应该怎样屏蔽这些不符合运算规则的“1”为空白?
Public Function XHCOUNTIF(QY As Range, ZQ, tj, Optional x = 0, Optional y As Range)
    Application.Volatile
    arr = QY
    If y Is Nothing Then
        crr = Cells(QY(1).Row, 5).Resize(UBound(arr))
    Else
        crr = y
    End If

    For s = UBound(crr) To 1 Step -1
        If crr(s, 1) <> "" Then Exit For
    Next
    ReDim brr(1 To UBound(crr), 1 To 1) As Variant
    For i = 1 To UBound(crr)
        brr(i, 1) = ""
    Next
    n = 1

    m = crr(1, 1) + ZQ - 1
    For i = 1 To s
        If m <= crr(s, 1) Then
            For j = n To s
                If crr(j, 1) > m Then
                    n = j
                    m = m + ZQ
                    Exit For
                Else
                    If Val(tj) = Val(arr(j, 1)) Then
                        brr(i, 1) = Val(brr(i, 1)) + 1
                    End If
                End If
            Next j
        Else
            For j = n To UBound(crr)
                If Len(crr(j, 1)) > 0 Then
                    If tj = arr(j, 1) Then
                        brr(i, 1) = Val(brr(i, 1)) + 1
                    End If
                End If
            Next j
            If x = 0 Then
                brr(i, 1) = ""
            End If
            Exit For
        End If
    Next

    XHCOUNTIF = brr
End Function





无法上传有问题的附件。郁闷。excelhome论坛这两天很多时候总是上传不了附件。

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-3-11 14:45 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-3-11 15:31 | 显示全部楼层

恳请高手大神们帮忙解决38楼反映的问题。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-4-27 02:05 , Processed in 0.052761 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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