Excel女士用上一个值和下一个值的平均值替换值
我正在使用Excel中的每小时天气数据以及相应的记录的温度值。Excel女士用上一个值和下一个值的平均值替换值
某些值未被记录,而是在电子表格中显示为“M”。例如,A32 = 28,A33 = M,A34 = 30。我想用公式替换该“M”以获取前一个值和下一个值的平均值。我知道如何手动执行此操作,但是我很难编写宏来查找电子表格中的所有M,然后按照上面所述自动替换它。
我的主要障碍是越来越擅长使用正确的值来替换“M”。
这里是我的代码
Sub MReplace()
'
' MReplace Macro
'
'
ActiveCell.Select
Cells.Find(What:="M", After:=ActiveCell, LookIn:=xlFormulas, LookAt:= _
xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _
, SearchFormat:=False).Activate
Cells.FindNext(After:=ActiveCell).Activate
ActiveCell.Offset(-8, 1).Range("A1").Select
Cells.Find(What:="M", After:=ActiveCell, LookIn:=xlFormulas, LookAt:= _
xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=True _
, SearchFormat:=False).Activate
Cells.FindNext(After:=ActiveCell).Activate
ActiveCell.Replace What:="M", Replacement:="[****This is what I am having difficulty with****]", LookAt:=xlWhole, _
SearchOrder:=xlByRows, MatchCase:=True, SearchFormat:=False, _
ReplaceFormat:=False
Cells.Find(What:="M", After:=ActiveCell, LookIn:=xlFormulas, LookAt:= _
xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=True _
, SearchFormat:=False).Activate
End Sub
我听说过的东西,你可以把该代码,可以解决选定的单元格。我认为它是cell(),但我不确定。也许这是让它更好地工作的一种方式?
试试这个代码:
Sub MReplace()
Dim ws As Worksheet
Dim cel As Range
Dim firstAddress As String
Set ws = ActiveSheet
Set cel = ws.Range("A:A").Find("M")
If Not cel Is Nothing Then
firstAddress = cel.Address
Do
cel.Value = (cel.Offset(1) + cel.Offset(-1))/2
Set cel = ws.Range("A:A").FindNext(cel)
hr = False
If Not cel Is Nothing Then
If cel.Address <> firstAddress Then
hr = True
End If
End If
Loop While hr
End If
End Sub
它通过循环含“M”的所有单元格,并与平均一个在右边和左边的一个替换它。由于没有列在左侧,因此它会出现在第一列中的任何错误。
我正在查看的数据是作为一个大数字列导入的,所以我会改变它,使第13行中的(,1)和(,-1)代表(1,)和(-1)?非常感谢@scott –
@LucasT对不起,我认为这是一张桌子。请参阅编辑 –
@LucasT这是否适合您?如果是这样,请标记为正确。只有你能做到这一点。它会回答这个问题。点击答案上的绿色复选标记。如果没有,那么它做错了什么,所以我可以修复它。 –
欢迎来到SO。一般来说,SO不是我的网站的代码。如果您尝试过任何东西,请将其张贴在原始帖子中,以便我们可以帮助解决特定问题。如果你表明你已经尝试过,你更有可能获得帮助。 –
感谢您的提示! –