ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 统计符合条件的个数

[复制链接]

TA的精华主题

TA的得分主题

发表于 2025-4-15 19:13 | 显示全部楼层 |阅读模式
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
屏幕截图 2025-04-15 191148.png

1122.zip

13.31 KB, 下载次数: 20

TA的精华主题

TA的得分主题

发表于 2025-4-15 19:44 | 显示全部楼层
本帖最后由 shiruiqiang 于 2025-4-15 19:47 编辑

image.jpg

image.jpg

1122.rar

21.89 KB, 下载次数: 3

TA的精华主题

TA的得分主题

发表于 2025-4-15 19:46 | 显示全部楼层
本帖最后由 ykcbf1100 于 2025-4-15 19:50 编辑

附件供参考。。。

1122.zip

22.77 KB, 下载次数: 5

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2025-4-15 19:50 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
  1. Sub ykcbf()    '//2025.4.15
  2.     Application.ScreenUpdating = False
  3.     Set d = CreateObject("Scripting.Dictionary")
  4.     Set d1 = CreateObject("Scripting.Dictionary")
  5.     r = Cells(Rows.Count, 1).End(3).Row
  6.     arr = Range("a2:c" & r)
  7.     For i = 2 To UBound(arr)
  8.         s = arr(i, 1) & " " & arr(i, 2) & " " & arr(i, 3)
  9.         d1(s) = ""
  10.     Next
  11.     For Each k In d1.keys
  12.         b = Split(k)
  13.         num = Val(b(2))
  14.         If num <= 1000 Then p1 = 1 Else p1 = 0
  15.         If num <= 5000 And num > 1000 Then p2 = 1 Else p2 = 0
  16.         If num <= 10000 And num > 5000 Then p3 = 1 Else p3 = 0
  17.         If num > 10000 Then p4 = 1 Else p4 = 0
  18.         s = b(0)
  19.         If Not d.exists(s) Then
  20.             d(s) = Array(p1, p2, p3, p4)
  21.         Else
  22.             t = d(s)
  23.             t(0) = t(0) + p1
  24.             t(1) = t(1) + p2
  25.             t(2) = t(2) + p3
  26.             t(3) = t(3) + p4
  27.             d(s) = t
  28.         End If
  29.     Next
  30.     arr = [h3:l14]
  31.     For i = 1 To UBound(arr)
  32.         s = CStr(arr(i, 1))
  33.         If d.exists(s) Then
  34.             t = d(s)
  35.             For j = 2 To 5
  36.                 arr(i, j) = t(j - 2)
  37.             Next
  38.         End If
  39.     Next
  40.     [h3:l14] = arr
  41.     Set d = Nothing
  42.     Set d1 = Nothing
  43.     Application.ScreenUpdating = True
  44.     MsgBox "OK!"
  45. End Sub

复制代码


评分

2

查看全部评分

TA的精华主题

TA的得分主题

发表于 2025-4-15 19:51 | 显示全部楼层
写了公式:每列公式不一
下拉
=SUMPRODUCT(IFERROR(1/COUNTIFS($A:$A,$H3,$B:$B,$B$2:$B$104,$C:$C,$C$2:$C$104)*($C$2:$C$104<=1000),))
=SUMPRODUCT(IFERROR(1/COUNTIFS($A:$A,$H3,$B:$B,$B$2:$B$104,$C:$C,$C$2:$C$104)*($C$2:$C$104<=5000)*($C$2:$C$104>1000),))
=SUMPRODUCT(IFERROR(1/COUNTIFS($A:$A,$H3,$B:$B,$B$2:$B$104,$C:$C,$C$2:$C$104)*($C$2:$C$104<=10000)*($C$2:$C$104>5000),))
=SUMPRODUCT(IFERROR(1/COUNTIFS($A:$A,$H3,$B:$B,$B$2:$B$104,$C:$C,$C$2:$C$104)*($C$2:$C$104>10000),))

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2025-4-15 20:02 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2025-4-15 20:06 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
Sub test250415()
Dim i, m As Integer, ar, br As Variant, d1, d2 As Object
Set d1 = CreateObject("scripting.dictionary")
Set d2 = CreateObject("scripting.dictionary")
ar = Range("a1:d" & Range("a65536").End(xlUp).Row)
d2.Add "四档", 5: d2.Add "三档", 4
d2.Add "二档", 3: d2.Add "一档", 2
ReDim br(1 To 30, 1 To 5)
For i = 2 To UBound(ar)
    If Not d1.exists(ar(i, 1) & ar(i, 2) & ar(i, 3)) Then
        d1(ar(i, 1) & ar(i, 2) & ar(i, 3)) = ""
        If ar(i, 3) > 10000 Then
            ar(i, 4) = "四档"
         Else
            If ar(i, 3) > 5000 Then
                ar(i, 4) = "三档"
            Else
                If ar(i, 3) > 1000 Then
                    ar(i, 4) = "二档"
                Else
                    ar(i, 4) = "一档"
                End If
            End If
        End If
        If Not d2.exists(ar(i, 1)) Then
            m = m + 1
            d2(ar(i, 1)) = m
            br(d2(ar(i, 1)), 1) = ar(i, 1)
        End If
        br(d2(ar(i, 1)), d2(ar(i, 4))) = br(d2(ar(i, 1)), d2(ar(i, 4))) + 1
    End If
Next
[h3].Resize(12, 4).ClearContents
[h3].Resize(m, 4) = br
MsgBox "ok"
End Sub

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2025-4-15 20:07 | 显示全部楼层
供参考,欢迎批评指正

1122 -250415.rar

26.25 KB, 下载次数: 8

样稿

TA的精华主题

TA的得分主题

发表于 2025-4-15 21:16 | 显示全部楼层
本帖最后由 cdcn 于 2025-4-15 21:46 编辑

练习。。。请指正

1122A.rar (21.61 KB, 下载次数: 1)

TA的精华主题

TA的得分主题

发表于 2025-4-15 21:39 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2025-4-21 23:03 , Processed in 0.028985 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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