数据平滑excel中的宏或python脚本,用于丢失数据
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据平滑excel中的宏或python脚本,用于丢失数据相关的知识,希望对你有一定的参考价值。
我正在寻找一个宏或python脚本,可以帮助我解决下面的问题。
我有一张包含数千行数据的Excel表格。有时会出现服务器中断,当时没有数据。这些实例由该特定单元格中的“/”符号表示。我希望能够找到那些“/”的所有实例,然后在这些单元格中填写一个数字,相当于它上面和下面的单元格的平均值,以“修复”错误。
Nuance 1:如果连续存在多个“/”,我希望它们都是错误串上下两个夹心单元的平均值。
我在下面附上了一张示例图片,期待任何回复!
我目前一直在尝试手动执行此操作,这显然无法正常工作。
答案
如果你必须使用VBA,而不是一些公式(见其他答案!),这里有一些相当简单的宏:
之前:
宏:
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
后:
你必须明显改变RNG
以满足你的需要,例如:.Range(Cells(3, 2), Cells(LR, LC))
?
还要注意我从第二行开始并将在前一行停止,你必须手动检查它们,因为它不能是相邻单元格的平均值。
以上是关于数据平滑excel中的宏或python脚本,用于丢失数据的主要内容,如果未能解决你的问题,请参考以下文章
使用宏或 VBA 正确关闭 access 2003 中的隐藏窗口?