Excel精英培训网

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

[已解决]按照条件限定生成相应的序号

[复制链接]
发表于 2021-11-21 20:14 | 显示全部楼层 |阅读模式
老师:
    我想请教的是:按照条件限定生成相应的序号。
    思路如下:
    1."数据区"由两个数据组成。(0642表示为6和42两个数)
    2.如果"条件区"的数据包含"数据区"个数符合"限制区"范围,则在"生成区"显示该数据前面的序号,否则为空。
    举例说明:
    C6为"2526","条件区"包含"2526"的个数为0,符合限制区0-0要求,则在生成区C3处生成序号001,否则为空。
    我这里用的是函数,当数据量大的时候,运算速度慢的惊人,请老师给予VBA。
    =IF(OR(SUM(COUNTIF(主界面!$C$2:$Z$2,MID(主界面!C6,{1;3},2)))<主界面!$C$4,SUM(COUNTIF(主界面!$C$2:$Z$2,MID(主界面!C6,{1;3},2)))>主界面!$F$4),"",主界面!$A6)

      按条件生成序号.zip (16.5 KB, 下载次数: 5)
发表于 2021-11-21 20:40 | 显示全部楼层    本楼为最佳答案   
  1. Sub test()
  2. Dim arrRule(99) As Boolean, arrOri, arrNo, Mn&, Mx&, i&, j&, Rng As Range, s$, n&
  3. With Sheets("主界面")
  4.   For Each Rng In .[c2].CurrentRegion
  5.     arrRule(Val(Rng)) = True
  6.   Next Rng
  7.   arrOri = .[c6].CurrentRegion
  8.   arrNo = .[a6].CurrentRegion
  9.   Mn = .[c4]: Mn = .[f4]
  10. End With
  11. For i = 1 To UBound(arrOri)
  12.   For j = 1 To UBound(arrOri, 2)
  13.     n = -arrRule(Val(Left(arrOri(i, j), 2))) - arrRule(Val(Right(arrOri(i, j), 2)))
  14.     If n >= Mn And n <= Mx Then arrOri(i, j) = "'" & arrNo(i, 1) Else arrOri(i, j) = ""
  15.   Next j
  16. Next i
  17. Sheets("生成区").[c3].Resize(UBound(arrOri), UBound(arrOri, 2)) = arrOri
  18. End Sub
复制代码

评分

参与人数 1学分 +2 收起 理由
kandhong + 2 我和小伙伴都惊呆了

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2021-11-21 22:13 | 显示全部楼层
回复

使用道具 举报

发表于 2021-11-21 22:16 | 显示全部楼层
kandhong 发表于 2021-11-21 22:13
老师大作已收悉,非常感谢!

不必客气!
回复

使用道具 举报

 楼主| 发表于 2021-11-21 23:16 | 显示全部楼层
本帖最后由 kandhong 于 2021-11-21 23:19 编辑

老师:
    请帮助解决“按照条件限定生成相应的序号”扩展问题。
    思路如下:
    1."数据区"由两个数据组成。(0642表示为6和42两个数)
    2.如果"条件区"的数据包含"数据区"个数符合"限制区"范围,则在"生成区"显示该数据前面的序号,否则为空。
    3.其结果在"生成区"生成。
    请老师给予VBA。    按条件生成序号.zip (14.83 KB, 下载次数: 6)
回复

使用道具 举报

 楼主| 发表于 2021-11-22 04:38 | 显示全部楼层

老师:
     您提供的“按照条件限定生成相应的序号”VBA,在限定条件(0-0)时可正常运行,但当在限定条件(0-1)时,则不显示结果。
      请老师抽空指点一下。

回复

使用道具 举报

发表于 2021-11-22 09:47 | 显示全部楼层
kandhong 发表于 2021-11-22 04:38
老师:
     您提供的“按照条件限定生成相应的序号”VBA,在限定条件(0-0)时可正常运行,但当在限定 ...

白天比较忙,需要晚上才能处理,如果你能等的话。
回复

使用道具 举报

 楼主| 发表于 2021-11-22 10:24 | 显示全部楼层
大灰狼1976 发表于 2021-11-22 09:47
白天比较忙,需要晚上才能处理,如果你能等的话。

收悉。老师抽时间给予指点就行,不急。
回复

使用道具 举报

 楼主| 发表于 2021-11-22 15:33 | 显示全部楼层
本帖最后由 kandhong 于 2021-11-22 15:34 编辑
大灰狼1976 发表于 2021-11-22 09:47
白天比较忙,需要晚上才能处理,如果你能等的话。

请老师对“按照条件限定生成相应的序号”问题进行升级拓展。
思路如下:
    1."数据区"为:C6:H24。
    2."条件区"为:C26:H34。
    3."条件区"数据包含"数据区"个数符合"限制区"范围,则在"生成区"显示该数据前面的序号,否则为空。
    4.其结果在"生成区"生成。

    举例说明:
    1."条件区"数据为:25 43 21 16,它包含"数据区"03 43 中1个数据43,符合"限制区"范围0-1,则显示它前面序号"019";
    2. "条件区"数据为:25 43 21 16,它包含"数据区"19 33 中0个数据,符合"限制区"范围0-1,则显示它前面序号"018"。
    请老师给予VBA。
    按条件生成序号(拓展升级).zip (15.07 KB, 下载次数: 3)
回复

使用道具 举报

发表于 2021-11-23 08:42 | 显示全部楼层
昨天晚上和朋友聚会没时间,今天白天如果没有人解答的话,我下班后看看。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-24 10:13 , Processed in 0.396937 second(s), 13 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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