以下代码提供了Find What:
调试。尝试查看一系列数值(从ea单元格中的公式找到,在ea单元格中相同),如果不存在正好为0的值,则查找并选择负值最小的单元格。然后通过目标搜索将该单元格设置为0。
Sub Test()
Dim Cel As Range
For Each Cel In ThisWorkbook.Sheets("Sheet1").Range("V17:V57")
If Cel.Value <> 0 Then
Cel.Find What:=Application.WorksheetFunction.FormulaArray("MAX(IF(V17:V57<=0,V17:V57),MIN(V17:V57))"), After:=Cells(57, 22), LookIn:=xlFormulas, LookAt:= _
xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False
Cel.GoalSeek Goal:=0, ChangingCell:=Cel.Offset(0, -4)
End If
Next Cel
End Sub
我修改了Find What
行,没有更多的调试错误,但是如何进一步修改它以实际select
找到的最小负数单元格呢?
Cel.Find What:=Evaluate("=MAX(IF(V17:V57<=0,V17:V57),MIN(V17:V57))"), LookIn:=xlFormulas, LookAt:= _
xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False
在Cel.Select
工作之后使用Find What:
现在,我的Find What
不管值是多少,都在查找范围内的最后一个单元格。它应该找到最少的负面因素。任何反馈表示赞赏。这就是现在的代码
For Each Cel In ThisWorkbook.Sheets("Sheet1").Range("V17:V57")
If Cel.Value <> 0 Then
Cel.Find What:=ActiveSheet.Evaluate("=LARGE(V17:V57,COUNTIF(V17:V57,"">0"")+1)")
Cel.Select
End If
Next Cel
答案 0 :(得分:0)
数组工作表函数的结果可能是一个值数组,这不是.Find
命令的有效参数。确保您要传递给.Find
方法的参数有效。
没有看到您的数据,很难给出更详细的建议。