Excel精英培训网

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

[已解决]请老师帮我看一下这个代码应该怎么写?

[复制链接]
发表于 2021-1-8 13:01 | 显示全部楼层 |阅读模式
3学分
本帖最后由 ryoryo66 于 2021-1-8 13:25 编辑

B1:E1的数字,对比J列的每行数字,看看出现的数字一致的有多少格. 比如J1里07,08,09=0,实际上,07,08,09对比B1:E1,有1个08,说明这个J1里的=0是不一致的,不用计数;接着是J2里的03,06,09,12,15=2,实际上03,06,09,12,15对比B1:E1确实是2个,那么是一致的,计数1个;
依次检查J3,J4,J5....,这里的5格中有2格是一致的,那么一共计数2个.就在 J列最后一行非空的下方显示2. 请老师帮我看一下这个代码应该怎么写啊?
J列不一定是固定5格,这里是J1:J5,有可能是J1:J6,或J1:J8.这样的行数不固定.
数字的范围都是01-15.
数据全都是英文逗号分隔.

J列里的数字事先就是带有 = 几的
最佳答案
2021-1-8 13:01
本帖最后由 高 于 2021-1-8 14:05 编辑
  1. Sub gghjhjd()
  2. r = Range("j1").End(xlDown).Row
  3. If Not Range("j" & r) Like "*=*" Then
  4. r = r - 1
  5. End If
  6. For x = 1 To r
  7.     arr = Split(Split(Range("j" & x), "=")(0), ",")
  8.     shzhi = Split(Range("j" & x), "=")(1)
  9.      For y = 0 To UBound(arr)
  10.      heji = heji + WorksheetFunction.CountIf(Range("b1:e1"), arr(y))
  11.      Next y
  12.      If heji - shzhi = 0 Then
  13.      i = i + 1
  14.       End If
  15.       heji = 0
  16. Next x
  17. Range("j" & r + 1) = i
  18. End Sub
复制代码

求助.zip

41.46 KB, 下载次数: 8

最佳答案

发表于 2021-1-8 13:01 | 显示全部楼层    本楼为最佳答案   
本帖最后由 高 于 2021-1-8 14:05 编辑
  1. Sub gghjhjd()
  2. r = Range("j1").End(xlDown).Row
  3. If Not Range("j" & r) Like "*=*" Then
  4. r = r - 1
  5. End If
  6. For x = 1 To r
  7.     arr = Split(Split(Range("j" & x), "=")(0), ",")
  8.     shzhi = Split(Range("j" & x), "=")(1)
  9.      For y = 0 To UBound(arr)
  10.      heji = heji + WorksheetFunction.CountIf(Range("b1:e1"), arr(y))
  11.      Next y
  12.      If heji - shzhi = 0 Then
  13.      i = i + 1
  14.       End If
  15.       heji = 0
  16. Next x
  17. Range("j" & r + 1) = i
  18. End Sub
复制代码

评分

参与人数 1学分 +2 收起 理由
ryoryo66 + 2 非常感谢

查看全部评分

回复

使用道具 举报

发表于 2021-1-8 13:59 | 显示全部楼层
本帖最后由 砂海 于 2021-1-8 14:00 编辑

好像是 彩票. bc.jpg
回复

使用道具 举报

 楼主| 发表于 2021-1-8 15:43 | 显示全部楼层

老师,还想问一下,
还有一种情况,就是像图中这个J列的情况,没有 =? 的情况下,
只要J列里的每格包含有B1:E1的情况下,就计数,然后返回到最后一行.这个要怎么修改一下?
360截图20201119092400172.jpg
回复

使用道具 举报

发表于 2021-1-8 21:36 | 显示全部楼层
本帖最后由 高 于 2021-1-8 21:39 编辑
ryoryo66 发表于 2021-1-8 15:43
老师,还想问一下,
还有一种情况,就是像图中这个J列的情况,没有 =? 的情况下,
只要J列里的每格包含有B1: ...

你说的这个计数和原来说的计数不应该是一回事。
J列的情况,没有 = 的情况下,只要J列里的每格包含有B1:E1的数值就计数,这是要计包含几个(次)吗?原来可说的是与等号后边的一致才计一个1。按你的新计数方法,计数会大不少的。你确定?当然,要改代码是很好改的。
回复

使用道具 举报

发表于 2021-1-8 21:41 | 显示全部楼层
可以计在你J列每行的后边,也可以计在J列。
回复

使用道具 举报

 楼主| 发表于 2021-1-8 21:48 | 显示全部楼层
本帖最后由 ryoryo66 于 2021-1-8 22:08 编辑
高 发表于 2021-1-8 21:36
你说的这个计数和原来说的计数不应该是一回事。
J列的情况,没有 = 的情况下,只要J列里的每格包含有B1:E ...

辛苦老师了,就把这个J列当作是 = 1来处理,修改一下吧.
就是现在的J列在没有 = ?的情况下.每格都是按照=1的情况.来对比一下一致的情况.然后结果还是返回在最后一行下方.

回复

使用道具 举报

 楼主| 发表于 2021-1-8 22:59 | 显示全部楼层
高 发表于 2021-1-8 21:41
可以计在你J列每行的后边,也可以计在J列。

老师,辛苦您再帮我修改一下上面的问题吧.
回复

使用道具 举报

发表于 2021-1-8 23:23 | 显示全部楼层
ryoryo66 发表于 2021-1-8 22:59
老师,辛苦您再帮我修改一下上面的问题吧.

看代码……………………

求助.rar

47 KB, 下载次数: 6

评分

参与人数 1学分 +2 收起 理由
ryoryo66 + 2 学习了

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2021-1-8 23:43 | 显示全部楼层
高 发表于 2021-1-8 23:23
看代码……………………

辛苦老师了,非常感谢.
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-3-28 22:26 , Processed in 0.447095 second(s), 10 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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