excel - 将包含 "#VALUE!"的单元格替换为周围单元格的平均值

标签 excel vba

我有一些数据列,其中一些单元格包含 #VALUE!。当然很烦人,所以我想编写一个宏,将每个工作表中的这些 #VALUE! 单元格替换为上面和下面 2 个单元格的平均值。

例如。

    A               A
1   1               1
2   2               2
3  #VALUE!    ->    3
4   4               4
5   5               5

我试图关注this postthis post并具有以下代码,但作为初学者,当我收到“运行时错误'13'”时,我显然错过了一些东西。

Sub Test()

Dim wks As Worksheet

For Each wks In ThisWorkbook.Worksheets

    With wks
        Dim Qty As Range

        For Each Qty In Range("A:ZZ").Cells

            If InStr(1, (Qty.Value), "#VALUE!") Then
            ActiveCell.FormulaR1C1 = "=AVERAGE(R[-2]C:R[-1]C,R[1]C:R[2]C)"
            Range("A:ZZ").Select

            End If
        Next
    End With
Next
End Sub

非常感谢任何帮助。

最佳答案

考虑:

If InStr(1, (Qty.Text), "#VALUE!") Then

由于数量是一个范围,因此不要使用ActiveCell;来代替:

Qty.FormulaR1C1 = "=AVERAGE(R[-2]C:R[-1]C,R[1]C:R[2]C)"

编辑#2:

这是一些工作代码:

Sub Test()
    Dim wks As Worksheet, Qty As Range

    For Each wks In ThisWorkbook.Worksheets
        With wks
            For Each Qty In Intersect(.UsedRange, .Range("A:ZZ").Cells)
                If InStr(1, (Qty.Text), "#VALUE!") Then
                    Qty.FormulaR1C1 = "=AVERAGE(R[-2]C:R[-1]C,R[1]C:R[2]C)"
                End If
            Next
        End With
    Next wks
End Sub

关于excel - 将包含 "#VALUE!"的单元格替换为周围单元格的平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28965460/

相关文章:

vba - 在某些循环结束之前无法使我的脚本处理错误

vba - 在后台打开 CSV 文件并检索工作表名称

javascript - 使用 vue 创建 Excel Add-in 时。如何根据 Excel 笔记本上的数据计算属性?

PHP/MYSQL 基于Column和Insert的拆分XLS

java - 使用 java 在 Sharepoint 中读取 Excel 文件

vba - 微软 Access : Capture values when record is deleted from subform

excel - 显示文本链接以从 Excel 打开特定的 PDF 页面

Excel =CELL ("color",[单元格]) 函数

sql - 使用VBA更改Access中多个表中列的数据类型

ms-access - Access 2010 中使用 IsNull 和多个条件的 DLookup