【发布时间】:2025-11-28 04:25:01
【问题描述】:
我试图通过平均一列值中的值来将#N/As 填充到值表中。逻辑是从#N/A的位置,使用两个指针找到下一个特定值上下两个非#N/A值,然后将它们平均以填充#N/A。这是代码:-
Sub generate_NA_cutoffs()
Worksheets("Final cutoffs2").Activate
Dim i As Integer, j As Integer
Dim fwd As Integer, rev As Integer
Dim o As Integer
o = 15
For j = 3 To j = 6 'Go column-wise
For i = 7 To i = 12 ' Go row-wise
If i = 7 And Application.WorksheetFunction.IsNA(Cells(i, j).Value) = True Then
Cells(i, j + o).Value = 0
ElseIf i = 12 And Application.WorksheetFunction.IsNA(Cells(i, j).Value) = True Then
Cells(i, j + o).Value = 1
ElseIf Application.WorksheetFunction.IsNA(Cells(i, j).Value) = True Then
fwd = i + 1
rev = i - 1
Do While Application.WorksheetFunction.IsNA(Cells(fwd, j).Value) = True
fwd = fwd + 1
Loop
Do While Application.WorksheetFunction.IsNA(Cells(rev, j + o).Value) = True
rev = rev - 1
Loop
'take the avg of 2 non NA values
Cells(i, j + o).Value = (Cells(fwd, j).Value + Cells(rev, j + o).Value) * 0.5
Else
Cells(i, j + o).Value = Cells(i, j).Value
End If
'i = i + 1
Next i
'j = j + 1
Next j
End Sub
O 是图像中第 3 个表中左起第 3 列与第 3 列之间的偏移量。这两个循环应该使用表 1 中的值填充表 3。我尝试了 Do While 和 While 的变体,但这也产生了同样的问题。一旦运行,没有报告错误,只是在第一列之外没有输出。 有人可以帮助我了解这里发生了什么或者我在这里缺少什么。 如果我需要为该问题添加更多描述,请告诉我。
非常感谢!
【问题讨论】:
-
我可能完全错了。如果你改变会发生什么:
For j = 3 To j = 6->For j = 3 To 6和For i = 7 To i = 12->For i = 7 To 12 -
@wizhi 说的很对
-
感谢@Wizhi 和@chris。奇迹般有效。感谢您的帮助 !请将此添加为答案,以便我可以关闭它。
-
完美!!乐意效劳!我添加了一个更丰富的答案。保重:)!