Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 2777|回复: 8

[已解决]满足多条件计数“√”

[复制链接]
发表于 2016-3-31 11:52 | 显示全部楼层 |阅读模式
本帖最后由 lidayu 于 2016-3-31 14:36 编辑

恳请老师赐教,如何实现满足多条件后计数“√”,详情附件。
VBA满足多条件汇总√.rar (93.87 KB, 下载次数: 12)
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2016-3-31 14:09 | 显示全部楼层    本楼为最佳答案   
掌握字典,万变不离其宗。

VBA满足多条件汇总√.rar

75.91 KB, 下载次数: 24

评分

参与人数 2 +9 收起 理由
lidayu + 3 完美解决了问题,谢谢您的帮助!
thelastdance + 6 来学习

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2016-4-1 09:42 | 显示全部楼层
本帖最后由 lidayu 于 2016-4-1 09:45 编辑
grf1973 发表于 2016-3-31 14:09
掌握字典,万变不离其宗。

grf1973 您好,学生有一不解请您赐教,用红色字体的7、5分别表示什么,谢谢!
Sub 小单位计数汇总()
    Set d = CreateObject("scripting.dictionary")
    arr = Sheets("数据源").[a1].CurrentRegion
    For i = 2 To UBound(arr)
        tmp = arr(i, 2) & arr(i, 3) & arr(i, 4) & arr(i, 1)      '临时条件:大单位+小单位+级别+性别
        For j = 5 To 9
            jz = IIf(j <= 7, "软肩章", "套肩章")   '肩章类型
            k = IIf(j <= 7, 2, 1) '软肩章计数*2,套肩章计数*1
            If arr(i, j) = "√" Then
                x = tmp & jz & arr(2, j)           '数据表条件:大单位+小单位+级别+性别+肩章类型+肩章规格
                d(x) = d(x) + k
            End If
        Next
    Next
    Sheet3.[c4:J13] = ""  '该区域为空
    arr = [a2:J13]  '汇总表范围,不含标题栏
    For i = 3 To UBound(arr) - 2  '汇总表起始行
        If arr(i, 1) = "" Then arr(i, 1) = arr(i - 1, 1)
        tmp = [a2] & [a3] & arr(i, 1) & arr(i, 2)        '临时条件:大单位+小单位+级别+性别
        For j = 3 To 7  '汇总范围列号
            If arr(1, j) = "" Then arr(1, j) = arr(1, j - 1)
            jz = IIf(j <= 5, "软肩章", "套肩章")   '肩章类型
            x = tmp & jz & arr(2, j)   '结果表条件:大单位+小单位+级别+性别+肩章类型+肩章规格
            arr(i, j) = d(x)   '计数结果
            arr(11, j) = arr(11, j) + arr(i, j)   '第12行汇总,行号需-1arr(11, j)
        Next

回复

使用道具 举报

发表于 2016-4-1 09:50 | 显示全部楼层
1、数据表中,5--7列为软肩章,8--9列为套肩章
jz = IIf(j <= 7, "软肩章", "套肩章")   的意思是,当j(列数)小于等于7时,jz为“软肩章”,否则为“套肩章”
等同于: If j <= 7 then jz = "软肩章" else jz = "套肩章"
2、结果表中,3--5列为软肩章,6--7列为套肩章,道理和上同。

评分

参与人数 1 +3 收起 理由
lidayu + 3 很给力

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2016-4-1 10:36 | 显示全部楼层
本帖最后由 lidayu 于 2016-4-1 11:13 编辑
grf1973 发表于 2016-4-1 09:50
1、数据表中,5--7列为软肩章,8--9列为套肩章
jz = IIf(j

您好,如果汇总表增加“硬肩章”数据源表不变("软肩章", “硬肩章”)同样*2要怎么改呢?
5.jpg
我改成下面这样提示 6.jpg
Sub 小单位计数汇总()
    Set d = CreateObject("scripting.dictionary")
    arr = Sheets("数据源").[a1].CurrentRegion
    For i = 2 To UBound(arr)
        tmp = arr(i, 2) & arr(i, 3) & arr(i, 4) & arr(i, 1)      '临时条件:大单位+小单位+级别+性别
        For j = 5 To 9
            jz = IIf(j <= 10, "软肩章", "硬肩章", "套肩章")   '肩章类型
            k = IIf(j <= 10, 2, 2, 1) '软肩章计数*2,套肩章计数*1
            If arr(i, j) = "√" Then
                x = tmp & jz & arr(2, j)           '数据表条件:大单位+小单位+级别+性别+肩章类型+肩章规格
                d(x) = d(x) + k
            End If
        Next
    Next
    Sheet3.[c4:m13] = ""  '该区域为空
    arr = [a2:m13]  '汇总表范围,不含标题栏
    For i = 3 To UBound(arr) - 2  '汇总表起始行
        If arr(i, 1) = "" Then arr(i, 1) = arr(i - 1, 1)
        tmp = [a2] & [a3] & arr(i, 1) & arr(i, 2)        '临时条件:大单位+小单位+级别+性别
        For j = 3 To 10  '汇总范围列号
            If arr(1, j) = "" Then arr(1, j) = arr(1, j - 1)
            jz = IIf(j <= 8, "软肩章", "硬肩章", "套肩章")  '肩章类型
            x = tmp & jz & arr(2, j)   '结果表条件:大单位+小单位+级别+性别+肩章类型+肩章规格
            arr(i, j) = d(x)   '计数结果
            arr(11, j) = arr(11, j) + arr(i, j)   '第12行汇总,行号需-1arr(11, j)
        Next
        arr(i, 11) = arr(i, 3) + arr(i, 4) + arr(i, 5)
        arr(i, 12) = arr(i, 9) + arr(i, 10)
        arr(i, 13) = arr(i, 11) + arr(i, 11)
        arr(11, 11) = arr(11, 11) + arr(i, 11)
        arr(11, 12) = arr(11, 12) + arr(i, 12)
    Next
    arr(11, 13) = arr(11, 12) + arr(11, 11)   '第13行总计,行号需-1arr(12, j)
    arr(12, 3) = arr(11, 13)
    [a2:m13] = arr  '汇总表范围,不含标题栏
End Sub

回复

使用道具 举报

发表于 2016-4-1 10:58 | 显示全部楼层
你还是上附件吧。
if a1 then
  x=b1
elseif a2 then
x=b2
else
x=b3
endif
可以写成x=iif(a1,b1,iif(a2,b2,b3)

评分

参与人数 1 +3 收起 理由
lidayu + 3 来学习

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2016-4-1 11:06 | 显示全部楼层
grf1973 发表于 2016-4-1 10:58
你还是上附件吧。
if a1 then
  x=b1

grf1973 您好,非常感谢您不厌其烦的帮助。
呈上附件
0401VBA满足多条件汇总√.rar (93.14 KB, 下载次数: 6)
回复

使用道具 举报

发表于 2016-4-1 11:21 | 显示全部楼层
做得很好啊,基本没问题。不改也行。

0401VBA满足多条件汇总√.rar

74.17 KB, 下载次数: 11

评分

参与人数 1 +3 收起 理由
lidayu + 3 很给力

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2016-4-1 11:27 | 显示全部楼层
grf1973 发表于 2016-4-1 11:21
做得很好啊,基本没问题。不改也行。

grf1973 您好,在您耐心的帮助下学生从中学习到很多在下感激涕零。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-3-29 04:32 , Processed in 0.554197 second(s), 17 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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