自用,经常做这样的工作,于是写了一个excel宏程序,放在这里备份。
问题描述:
由于excel自带的直方图统计的区间是 (],即小于等于某个上限,不能自动统计大于等于(≥)某个下限的区间,而工作中通常需要用到大于某个下限值的区间的数字,所以特编写了这个宏程序用于自动统计[)这样的区间数字个数。
————————————————————————————————
使用步骤:
1、打开“孔隙度分布计算.xls",将孔隙度数字复制到第一列,从第二行开始;
2、将最大值和最小值分别填入B2和C2单元格中;
3、设定区间步长,在E2单元格内输入区间步长值,就是你希望你的单个区间的长度;
4、按“ctrl+k”或运行“工具—>宏”中的“kongxidufenbu”宏,进行分布统计的自动计算;
5、到此已经完成99%的工作了,现在手工修改第一个区间的下限表示(≥)和最后一个区间的上限表示(<)。到此就全部ok了!
接下来就是将区间值和其间的个数用图表表示出来了。
————————————————————————————————
程序:
————————————————————————————————
- Sub kongxidufenbu()
-
- i = 2
- k = 0
- Do While Sheet1.Cells(i, 1) <> ""
- k = k + 1
- i = i + 1
- Loop
-
- Sheet1.Cells(1, 4) = "共" & k & "个"
- k = k + 1 '最后一个数字所在的行号为k行,从第2行起
-
- mymax = Sheet1.Cells(2, 2)
- mymin = Sheet1.Cells(2, 3)
- myfirst = Int(mymin)
- mylast = Int(mymax) + 1
- mybuchang = Sheet1.Cells(2, 5) '区间步长
-
-
- i = 4
- mynext = myfirst + mybuchang
- Do While mynext < mylast + mybuchang
-
- Sheet1.Cells(i, 3) = myfirst & "~" & mynext
-
- '以上代码实现孔隙度分布区的自动搜寻,以下代码实现各区间的孔隙度个数,≥的区间
-
- m = 0 '各区间的数字个数
- For j = 2 To k
- myvalue = Sheet1.Cells(j, 1)
- If myvalue >= myfirst And myvalue < mynext Then
- m = m + 1
- End If
- Next
- Sheet1.Cells(i, 4) = m
-
- myfirst = mynext
- mynext = mynext + mybuchang
- i = i + 1
- Loop
-
- End Sub
——————————————————————————————————————————————
程序可能有些臃肿,没去仔细检查和优化,只要能达到提高工作效率的效果就行了。