数据平滑excel中的宏或python脚本,用于丢失数据

问题描述 投票:-3回答:1

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

我有一张包含数千行数据的Excel表格。有时会出现服务器中断,当时没有数据。这些实例由该特定单元格中的“/”符号表示。我希望能够找到那些“/”的所有实例,然后在这些单元格中填写一个数字,相当于它上面和下面的单元格的平均值,以“修复”错误。

Nuance 1:如果连续存在多个“/”,我希望它们都是错误串上下两个夹心单元的平均值。

我在下面附上了一张示例图片,期待任何回复!

我目前一直在尝试手动执行此操作,这显然无法正常工作。

excel vba
1个回答
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))

还要注意我从第二行开始并将在前一行停止,你必须手动检查它们,因为它不能是相邻单元格的平均值。

© www.soinside.com 2019 - 2024. All rights reserved.