Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
楼主: wszbd

[已解决]黄绿红统计3

[复制链接]
 楼主| 发表于 2014-1-16 16:41 | 显示全部楼层
CheryBTL 发表于 2014-1-16 09:10
短消息收到,楼主想要的效果是什么?放在什么地方?请楼主模拟下想要的结果。

302.png
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
回复

使用道具 举报

 楼主| 发表于 2014-1-16 16:46 | 显示全部楼层
CheryBTL 发表于 2014-1-16 09:10
短消息收到,楼主想要的效果是什么?放在什么地方?请楼主模拟下想要的结果。

303.png
回复

使用道具 举报

 楼主| 发表于 2014-1-16 16:49 | 显示全部楼层
CheryBTL 发表于 2014-1-16 09:10
短消息收到,楼主想要的效果是什么?放在什么地方?请楼主模拟下想要的结果。

这就是想要的效果(Z18:AA21).png


谢谢!!!
回复

使用道具 举报

 楼主| 发表于 2014-1-16 16:51 | 显示全部楼层
CheryBTL 发表于 2014-1-16 09:10
短消息收到,楼主想要的效果是什么?放在什么地方?请楼主模拟下想要的结果。

这就是想要的效果(Z18:AA21).png 这就是想要的效果(Z18:AA21):选中的部分。


谢谢!!!
回复

使用道具 举报

发表于 2014-1-16 19:35 | 显示全部楼层    本楼为最佳答案   
附件请测试
  1. Private Sub CommandButton1_Click()
  2. Dim arr, arr1(1 To 4, 1 To 2), i&, j&, r&, c&, YGMax&, YRMax&, GRMax&, YGRMax&
  3. [z18].Resize(4, 2).ClearContents
  4. r = [d3].CurrentRegion.Rows.Count
  5. c = [d3].CurrentRegion.Columns.Count
  6. ReDim arr(1 To c)
  7. For j = 1 To c
  8.   For i = 1 To r
  9.     If Cells(i + 2, j + 3).Interior.ColorIndex = 6 Then arr(j) = arr(j) & "Y"
  10.     If Cells(i + 2, j + 3).Interior.ColorIndex = 3 Then arr(j) = arr(j) & "R"
  11.     If Cells(i + 2, j + 3).Interior.ColorIndex = 10 Then arr(j) = arr(j) & "G"
  12.   Next i
  13. Next j
  14. For j = 1 To c
  15.   If InStr(arr(j), "Y") > 0 And InStr(arr(j), "G") > 0 Then arr1(1, 1) = arr1(1, 1) + 1: arr1(1, 2) = Application.Max(arr1(1, 2), j - YGMax - 1): YGMax = j
  16.   If InStr(arr(j), "Y") > 0 And InStr(arr(j), "R") > 0 Then arr1(2, 1) = arr1(2, 1) + 1: arr1(2, 2) = Application.Max(arr1(2, 2), j - YRMax - 1): YRMax = j
  17.   If InStr(arr(j), "G") > 0 And InStr(arr(j), "R") > 0 Then arr1(3, 1) = arr1(3, 1) + 1: arr1(3, 2) = Application.Max(arr1(3, 2), j - GRMax - 1): GRMax = j
  18.   If InStr(arr(j), "Y") > 0 And InStr(arr(j), "G") > 0 And InStr(arr(j), "R") > 0 Then arr1(4, 1) = arr1(4, 1) + 1: arr1(4, 2) = Application.Max(arr1(4, 2), j - YGRMax - 1): YGRMax = j
  19. Next j
  20. [z18].Resize(4, 2) = arr1
  21. End Sub
复制代码

黄绿红统计3.zip

20.23 KB, 下载次数: 3

回复

使用道具 举报

发表于 2014-1-16 20:19 | 显示全部楼层
wszbd 发表于 2014-1-16 15:40

已作解,楼主验证下结果是否正确
黄绿红统计3.zip (22.98 KB, 下载次数: 4)
回复

使用道具 举报

发表于 2014-1-16 20:28 | 显示全部楼层
回复

使用道具 举报

 楼主| 发表于 2014-1-16 20:47 | 显示全部楼层
大灰狼1976 发表于 2014-1-16 19:35
附件请测试

我把第一句改成这样了:Sub 黄绿红统计2()   ,不会影响结果吧?


谢谢!!!
回复

使用道具 举报

 楼主| 发表于 2014-1-16 20:59 | 显示全部楼层
不信这样还重名 发表于 2014-1-16 20:19
已作解,楼主验证下结果是否正确

谢谢!!!

不过结果和我用笨方法数的不一样!
回复

使用道具 举报

发表于 2014-1-17 20:29 | 显示全部楼层
wszbd 发表于 2014-1-16 20:59
谢谢!!!

不过结果和我用笨方法数的不一样!

嗯,今天检查了下,不是代码的问题,是设计思路就有问题,我理解成红绿与红绿间隔了,而你其实把红绿黄也算作红绿的一种了,所以我统计出来的数据,只有红黄绿是和最佳是一致的,而红黄、红绿、黄绿都要加上红黄绿的值才对得上,同理,判别间隔时也是一样的道理了,我的间隔是红绿到下一个红绿的,而中间遇到的红黄绿没算在内。。。
看过最佳,也学习了一下如何在内存数组中运用函数,学到了
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-5 03:21 , Processed in 0.311541 second(s), 10 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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