Excel精英培训网

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

[已解决]用VBA填充黄色背景区域内的统计次数

[复制链接]
发表于 2014-5-23 18:26 | 显示全部楼层 |阅读模式
本帖最后由 superle! 于 2014-5-24 20:28 编辑

用VBA填充黄色背景区域内的统计次数。以第7行最后一个有值的右边的JY为准,如果JY有值的话,那么就以JZ为准,因为右边的数值会随时增加,统计数据等于7或大于7值的次数。        
比如A7单元格内是填充2次。JX7的值是7,JW7的值8,而JV7的值没有等于7或大于7,所以没有隔的情况下,它只有2次。        
B7填充统计1次,国为JW7是等于7或大于7,而JU7没有等于7或大于7,所以只统计出1次。下面的类推。        


最佳答案
2014-5-24 20:16
superle! 发表于 2014-5-24 19:34
不好意思,麻烦你了,还有一个问题,就是从第7行开始。,,因为从第2行到第6行都有是值的,但不是数值,我 ...
  1. Private Sub CommandButton1_Click()
  2.     Dim arrSrouce
  3.     Dim arrTarget()
  4.     Dim i%, j%, k%
  5.     With Sheets("sheet1")
  6.         arrSrouce = .Range(.Range("aa7"), .Range("aa7").End(xlDown).End(xlToRight))
  7.         ReDim arrTarget(1 To UBound(arrSrouce), 1 To 13)
  8.         For i = 1 To UBound(arrTarget)
  9.             For j = 1 To UBound(arrTarget, 2)
  10.                 k = UBound(arrSrouce, 2) + 1
  11.                 arrTarget(i, j) = 0
  12.                 Do
  13.                     k = k - j
  14.                     If arrSrouce(i, k) >= 7 Then
  15.                         arrTarget(i, j) = arrTarget(i, j) + 1
  16.                     Else
  17.                         Exit Do
  18.                     End If
  19.                 Loop
  20.             Next j
  21.         Next i
  22.     .Range("A7").Resize(UBound(arrTarget), UBound(arrTarget, 2)) = arrTarget
  23.     End With
  24. End Sub
复制代码
需求最好一次说清,改来改去,大家麻烦

工作簿11.rar

16.68 KB, 下载次数: 9

发表于 2014-5-23 18:50 | 显示全部楼层
回复

使用道具 举报

 楼主| 发表于 2014-5-23 19:00 | 显示全部楼层
fjmxwrs 发表于 2014-5-23 18:50
看得很晕,没能理解

这样会不会看明白一点?
QQ截图20140523185959.png
回复

使用道具 举报

发表于 2014-5-24 11:38 | 显示全部楼层
superle! 发表于 2014-5-23 19:00
这样会不会看明白一点?

你是做什么用的呀?看不懂什么意思
回复

使用道具 举报

发表于 2014-5-24 13:02 | 显示全部楼层
superle! 发表于 2014-5-23 19:00
这样会不会看明白一点?

工作簿11.rar (26.17 KB, 下载次数: 8)
回复

使用道具 举报

 楼主| 发表于 2014-5-24 14:29 | 显示全部楼层
本帖最后由 superle! 于 2014-5-24 14:46 编辑
cbg2008 发表于 2014-5-24 13:02

如果我要统计的从第7行到300行填充。301行以下的我不想填充出来。应该怎么修改下代码?


回复

使用道具 举报

发表于 2014-5-24 17:11 | 显示全部楼层
superle! 发表于 2014-5-24 14:29
如果我要统计的从第7行到300行填充。301行以下的我不想填充出来。应该怎么修改下代码?

ReDim arrTarget(1 To 300-7+1, 1 To 13)
回复

使用道具 举报

 楼主| 发表于 2014-5-24 19:34 | 显示全部楼层
cbg2008 发表于 2014-5-24 17:11
ReDim arrTarget(1 To 300-7+1, 1 To 13)

不好意思,麻烦你了,还有一个问题,就是从第7行开始。,,因为从第2行到第6行都有是值的,但不是数值,我不想让它统计出来 。
回复

使用道具 举报

发表于 2014-5-24 20:16 | 显示全部楼层    本楼为最佳答案   
superle! 发表于 2014-5-24 19:34
不好意思,麻烦你了,还有一个问题,就是从第7行开始。,,因为从第2行到第6行都有是值的,但不是数值,我 ...
  1. Private Sub CommandButton1_Click()
  2.     Dim arrSrouce
  3.     Dim arrTarget()
  4.     Dim i%, j%, k%
  5.     With Sheets("sheet1")
  6.         arrSrouce = .Range(.Range("aa7"), .Range("aa7").End(xlDown).End(xlToRight))
  7.         ReDim arrTarget(1 To UBound(arrSrouce), 1 To 13)
  8.         For i = 1 To UBound(arrTarget)
  9.             For j = 1 To UBound(arrTarget, 2)
  10.                 k = UBound(arrSrouce, 2) + 1
  11.                 arrTarget(i, j) = 0
  12.                 Do
  13.                     k = k - j
  14.                     If arrSrouce(i, k) >= 7 Then
  15.                         arrTarget(i, j) = arrTarget(i, j) + 1
  16.                     Else
  17.                         Exit Do
  18.                     End If
  19.                 Loop
  20.             Next j
  21.         Next i
  22.     .Range("A7").Resize(UBound(arrTarget), UBound(arrTarget, 2)) = arrTarget
  23.     End With
  24. End Sub
复制代码
需求最好一次说清,改来改去,大家麻烦
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-22 04:11 , Processed in 0.278207 second(s), 10 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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