Dim rng As Range Dim max As Double Dim min As Double Dim avg As Double Dim count As Integer Dim p1 As Integer Dim p2 As Integer Dim p3 As Integer '获取选定范围 Set rng = Application.Selection '计算最大值、最小值、平均值 max = WorksheetFunction.max(rng) min = WorksheetFunction.min(rng) avg = WorksheetFunction.avg(rng), avg = WorksheetFunction.avg(rng)报错
时间: 2023-12-19 12:07:54 浏览: 28
这个代码看起来像是 VBA 代码。如果 `avg = WorksheetFunction.avg(rng)` 报错,很可能是因为选定范围中包含了非数值类型的数据,例如文本或日期等。你可以尝试使用 `WorksheetFunction.IsNumber` 函数来过滤掉非数值类型的数据,例如:
```
Dim cell As Range
For Each cell In rng
If WorksheetFunction.IsNumber(cell.Value) Then
count = count + 1
If cell.Value >= 90 Then
p1 = p1 + 1
ElseIf cell.Value >= 80 Then
p2 = p2 + 1
ElseIf cell.Value >= 70 Then
p3 = p3 + 1
End If
End If
Next cell
```
这样就可以避免非数值类型的数据对平均值的计算造成影响。
相关问题
把下面代码的定义变量:Dim rng As Range Set rng = Selection For Each Cell In rng If Cell.MergeCells Then Set rng = Union(rng, Cell.MergeArea) End If
可以将代码定义变量的部分修改为:
```
Dim rng As Range
Set rng = Selection
Dim Cell As Range
For Each Cell In rng
If Cell.MergeCells Then
Set rng = Union(rng, Cell.MergeArea)
End If
Next Cell
```
这样就对变量 Cell 进行了定义,并且在 For Each 循环中使用了 Next Cell 语句来结束循环。
vba range函数的数值如何dim
在VBA中,可以使用`Dim`语句来声明变量。`Range`函数返回的是一个对象,所以在声明变量时,需要使用`Object`类型。
例如,下面的代码声明了一个名为`rng`的变量,它的类型为`Object`,并将其赋值为A1单元格:
```vb
Dim rng As Object
Set rng = Range("A1")
```
如果你想声明一个范围,可以使用`Range`对象。例如,下面的代码声明了一个名为`rng2`的变量,它的类型为`Range`,并将其赋值为A1到C3的单元格范围:
```vb
Dim rng2 As Range
Set rng2 = Range("A1:C3")
```
在声明变量时,还可以指定变量的数据类型。例如,下面的代码声明了一个名为`strValue`的变量,它的类型为`String`,并将其赋值为A1单元格的值:
```vb
Dim strValue As String
strValue = Range("A1").Value
```
需要注意的是,在使用`Range`函数引用单元格时,如果引用的单元格不存在,或者引用的范围超出了工作表的范围,会导致运行时错误。因此,在使用`Range`函数时,需要确保引用的单元格或范围是存在的。