ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 求 数字号码的属性

[复制链接]

TA的精华主题

TA的得分主题

发表于 2024-2-2 17:00 | 显示全部楼层 |阅读模式


学习求教:是否能通过VBA达成

通过运算按钮可以得到结果:
最新一期的数字号码(最后一行),总共7个, 要求可以自动显示每个号的属性:

1. 冷热:  本期之前连续10期没出过认为是冷号(前后区分别单独考虑);    否则为热号
2. 奇偶:  号码的奇偶性;
3. 红蓝绿:每个颜色对应一个数组,
号码在[1,2,3,4,5,6,7,8,9,10,11,12] 为红,
号码在[13,14,15,16,17,18,19,20,21,22,23,24] 为蓝,
号码在[25,26,27,28,29,30,31,32,33,34,35] 为绿;

4. 针对后区的号码,还有大小的属性:  ≤6为 小;>6为 大。

比如2024014 这一期的号码为:4 5 16 21 31 9 11  
每个号码的属性如下:

4: 热 偶 红
5: 热 奇 红
16:热 偶 蓝
21:热 奇 蓝
31:冷 奇 绿
9: 热 奇 红 大
11:热 奇 红 大

结果 输出到“号码属性”工作表中的最后一行(对应期数)

表一:每一期的号码数字

表一:每一期的号码数字

表二:号码属性

表二:号码属性

求自动显示 数字号码的属性.zip

19.83 KB, 下载次数: 3

TA的精华主题

TA的得分主题

发表于 2024-2-2 17:29 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
没什么技术难度,就是繁琐的if判断而已,
但是,不明白的是:楼主的表述似乎跟表格要呈现的结果不一致,

TA的精华主题

TA的得分主题

发表于 2024-2-2 18:01 | 显示全部楼层
Sub 判断()
Dim d As Object
Set d = CreateObject("scripting.dictionary")
With Sheets("号码数据")
    r = .Cells(Rows.Count, 1).End(xlUp).Row
    If r < 3 Then MsgBox "号码数据为空!": End
    ar = .Range("a2:i" & r)
End With
With Sheets("号码属性")
    rs = .Cells(Rows.Count, 1).End(xlUp).Row + 1
    br = .Range("a1:bb" & rs)
    If r < 13 Then
        ks = 2
    Else
        ks = r - 11
    End If
    For j = 2 To UBound(br, 2)
        If br(2, j) = "" Then br(2, j) = br(2, j - 1)
        zd = br(2, j) & "|" & br(3, j)
        d(zd) = j
    Next j
    For j = 2 To UBound(ar, 2)
        sl = 0
        zf = ar(UBound(ar), j)
        For i = ks To UBound(ar) - 1
            If ar(i, j) = zf Then
                sl = sl + 1
            End If
        Next i
        If sl > 0 Then
            bs = "热"
        Else
            bs = "冷"
        End If
        If zf <= 12 Then
            ys = "红"
        ElseIf zf > 12 And zf <= 24 Then
            ys = "蓝"
        ElseIf zf > 25 Then
            ys = "绿"
        End If
        If zf Mod 2 = 0 Then
            jo = "偶"
        Else
            jo = "奇"
        End If
        If zf <= 6 Then
            dx = "小"
        Else
            dx = "大"
        End If
        rr = Array(bs, ys, jo, dx)
        For s = 0 To UBound(rr)
            zd = ar(1, j) & "|" & rr(s)
            lh = d(zd)
            If lh <> "" Then
                br(UBound(br), lh) = rr(s)
            End If
        Next s
    Next j
    br(UBound(br), 1) = ar(UBound(ar), 1)
    .Cells(rs, 1).Resize(1, UBound(br, 2)) = Application.Index(br, UBound(br), 0)
    .Cells(rs, 1).Resize(1, UBound(br, 2)).Borders.LineStyle = 1
End With
MsgBox "ok!"
End Sub

评分

2

查看全部评分

TA的精华主题

TA的得分主题

发表于 2024-2-2 18:02 | 显示全部楼层
结果为认真核对,仅供参考
求自动显示 数字号码的属性.rar (27.72 KB, 下载次数: 10)

评分

2

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-2-3 08:33 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
3190496160 发表于 2024-2-2 18:01
Sub 判断()
Dim d As Object
Set d = CreateObject("scripting.dictionary")

本来我想打100分的,网站设置的最多评2分。感谢大神!

TA的精华主题

TA的得分主题

发表于 2024-2-3 08:38 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
damin369 发表于 2024-2-3 08:33
本来我想打100分的,网站设置的最多评2分。感谢大神!

你也仅仅打了一分呀,哈哈哈哈

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-2-3 12:03 来自手机 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
3190496160 发表于 2024-2-3 08:38
你也仅仅打了一分呀,哈哈哈哈

补啦
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-9-28 21:16 , Processed in 0.049121 second(s), 17 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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