我有一个时间序列,其中一些记录没有价值 离。
A1:1-1-2000 ------------------- B1:2
A2:1-2-2000 ------------------- B2:
A3:1-3-2000 ------------------- B3:3
A4:1-4-2000 ------------------- B4:6
A5:1-5-2000 ------------------- B5:
A6:1-6-2000 ------------------- B6:3
A7:1-7-2000 ------------------- B7:
A8:1-8-2000 ------------------- B8:7
A9:1-9-2000 ------------------- B9:
A10:1-10-2000 ----------------- B10:
A11:1-11-2000 ----------------- B11:9
A12:1-12-2000 ------------------- B12:8
我需要用
之前和之后最接近的值的平均值替换空白答案 0 :(得分:1)
你可以使用下面的代码,它使用迭代来处理多个连续的空格(正如你在B9:B10
中所做的那样)。
Sub FillEm()
Dim rng1 As Range
Dim rng2 As Range
Set rng2 = Range("B1:b12")
On Error Resume Next
Set rng1 = rng2.SpecialCells(xlBlanks)
On Error GoTo 0
If rng1 Is Nothing Then Exit Sub
Application.Iteration = True
rng1.FormulaR1C1 = "=AVERAGE(R[-1]C,R[1]C)"
Application.Iteration = False
rng2.Value = rng2.Value
End Sub
答案 1 :(得分:0)
这是一个公式版本,它结合了一个标准公式,用于查找范围中的最后一个非空白单元格,以及用于查找范围中第一个非空白单元格的公式: -
=IF(B2="",AVERAGE(LOOKUP(2,1/(B$1:B1<>""),B$1:B1),INDEX(B3:B$12,MATCH(TRUE,INDEX((B3:B$12<>""),0),0))),B2)
进入C2并下拉。
B1和B12必须是非空白的。
如果将公式复制到B1中,它将显示“#REF!”公式中的错误,但如果B1包含数字,则会给出正确的答案。