Excel中的数据平滑宏或python脚本缺少数据

时间:2019-03-29 18:38:18

标签: excel vba

我正在寻找可以帮助我解决以下问题的宏或python脚本。

我有一个具有数千行数据的Excel工作表。有时服务器中断,并且那几天没有数据。这些实例在该特定单元格中用“ /”符号表示。我希望能够找到那些“ /”的所有实例,然后在这些单元格中填充一个等于其上方和下方的单元格平均值的数字,以“修复”错误。

误码1:如果连续有多个“ /”,我希望它们全部是错误字符串上下两个夹心单元的平均值。

我在下面附上了示例图片,期待您的答复!

我目前一直在尝试手动执行此操作,这显然行不通。

enter image description here

1 个答案:

答案 0 :(得分:0)

如果您必须使用VBA而不是某些公式(请参见其他答案!),那么这里有一些相当简单的宏:

之前:

enter image description here

宏:

Sub Test()

With ActiveWorkbook.Sheets(1)

    LR = .Cells(Rows.Count, 1).End(xlUp).Row
    LC = .Cells(1, Columns.Count).End(xlToLeft).Column
    Set RNG = .Range(Cells(1, 1), Cells(LR, LC))
    With RNG
        Set CL = .Find("/", LookIn:=xlValues)
        If Not CL Is Nothing Then
            FA = CL.Address
            Do
                X = 1
                If CL.Offset(1, 0) <> "/" Then
                    CL.Value = WorksheetFunction.Average(CL.Offset(-1, 0), CL.Offset(1, 0))
                Else
                    Do
                        X = X + 1
                    Loop While CL.Offset(X, 0).Value = CL.Value
                    CL.Value = WorksheetFunction.Average(CL.Offset(-1, 0), CL.Offset(X + 1, 0))
                End If
                Set CL = .FindNext(CL)
            If CL Is Nothing Then
                GoTo DF
            End If
            Loop While CL.Address <> FA
        End If
DF:
    End With
End With

End Sub

之后:

enter image description here

您必须根据自己的需要更改RNG,例如:.Range(Cells(3, 2), Cells(LR, LC))

还请注意,我从第二行开始,将在最后一行之前停止,您必须手动进行检查,因为它不能是相邻单元格的平均值。