您的位置:首页 > 其它

Excel宏_实现对动态数据求均值和落在特定范围的数据的个数

2008-06-14 00:13 393 查看
5月16号晚,同学叫我帮忙写一个Excel宏,实现对动态数据的求均值和落在特定范围的数据的个数。由于我在大二学过VB(那时学VB主要是为了应付学校的计算机二级考试,过后就没动过了),但对VBA从没碰过,匆忙间也就在Microsoft 的在线帮助中看看,搞到早上5点左右,终于搞定,今天在此记下代码,以后如果有用,就方便了,如果他人觉得有用,请注明出处,谢谢!

Sub QIU_ZHI()

'要求:选中你要处理的数据,数据请不要放在前4列中

'功能:对数据求均值、0.9*均值、1.1*均值和落在这个范围内的数据的个数。

'注明:均值在3行3列,0.9*均值在4行3列,1.1*均值在5行3列,落在这个范围内的数据的个数在6行3列

'edit by Hsxzhe 080517

Dim mycell As Range '声明mycell是一个区域变量

'声明各变量,由于对VBA常用函数、属性不熟悉,故此宏中定义了大量变量来存储需要处理的数据

Dim data_sum As Double '总和

Dim pin_jun As Double '均值

Dim zero_p_nine_pinjun As Double '0.9*均值

Dim one_p_one_pinjun As Double '1.1*均值

Dim fanwei_feshu As Integer '落在这个范围内的数据的个数

Dim row_start As Integer '标记所选区域的开始行号

Dim row_end As Integer '标记所选区域的结束行号

Dim column_start As Integer '标记所选区域的开始列号

Dim column_end As Integer '标记所选区域的结束列号

Dim aero_num As Integer '标记所选区域的总个数

Dim row_temp As Integer

Dim column_temp As Integer

'初始化变量

data_sum = 0

pin_jun = 0

zero_p_nine_pinjun = 0

one_p_one_pinjun = 0

fanwei_geshu = 0

'求出总和

aero_num = 0

For Each mycell In Selection

If aero_num = 0 Then

row_start = mycell.Row

column_start = mycell.Column

End If

data_sum = data_sum + mycell.Value

aero_num = aero_num + 1

row_end = mycell.Row

column_end = mycell.Column

Next

'求出个数据

pin_jun = data_sum / aero_num

zero_p_nine_pinjun = 0.9 * pin_jun

one_p_one_pinjun = 1.1 * pin_jun

row_temp = 0

column_temp = 0

'求出落在这个范围内的数据的个数

For row_temp = row_start To row_end

For column_temp = column_start To column_end

If Cells(row_temp, column_temp).Value > zero_p_nine_pinjun And Cells(row_temp, column_temp).Value < one_p_one_pinjun Then

fanwei_geshu = fanwei_geshu + 1 '落在范围内,则统计个数

End If

Next

Next

Cells(3, 3) = pin_jun

Cells(4, 3) = zero_p_nine_pinjun

Cells(5, 3) = one_p_one_pinjun

Cells(6, 3) = fanwei_geshu

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

''''''''''''''''''''''下面的是垃圾,只是格式处理''''''''''''''''''''''''''

Cells(3, 2) = "均值"

Cells(4, 2) = "0.9*均值"

Cells(5, 2) = "1.1*均值"

Cells(6, 2) = "范围个数"

Range(Cells(3, 2), Cells(6, 3)).Select

Range(Cells(3, 2), Cells(6, 3)).Font.Bold = True

With Selection.Borders(xlEdgeLeft)

.LineStyle = xlContinuous

.Weight = xlMedium

.ColorIndex = xlAutomatic

End With

With Selection.Borders(xlEdgeTop)

.LineStyle = xlContinuous

.Weight = xlMedium

.ColorIndex = xlAutomatic

End With

With Selection.Borders(xlEdgeBottom)

.LineStyle = xlContinuous

.Weight = xlMedium

.ColorIndex = xlAutomatic

End With

With Selection.Borders(xlEdgeRight)

.LineStyle = xlContinuous

.Weight = xlMedium

.ColorIndex = xlAutomatic

End With

End Sub
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: