VBA查找什么错误
下面的代码给出了VBA查找什么错误,vba,excel,excel-formula,Vba,Excel,Excel Formula,下面的代码给出了查找内容:调试。尝试查找一系列数值(从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:=A
查找内容:
调试。尝试查找一系列数值(从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
使用Cel。在后选择,查找工作内容:
现在,我的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
此工作簿中每个Cel的。工作表(“Sheet1”)。范围(“V17:V57”)
如果单元格值为0,则
Cel.Find What:=ActiveSheet.Evaluate(“=LARGE(V17:V57,COUNTIF(V17:V57,“>0”)+1)”)
Cel.Select
如果结束
下一个细胞
数组工作表函数的结果可能是一个值数组,它不是.Find
命令的有效参数。确保输入到.Find
方法的参数有效
如果看不到您的数据,就很难给出更详细的建议。应用程序.WorksheetFunction
返回什么?您是否尝试过对此进行故障排除?没有名为FormulaArray
的WorksheetFunction
。看见也许你想评估一下<代码>内容:=评估(“=最大值(如果(V17:V57感谢PEH。您使用Evaluate的建议似乎有所帮助。我用修订的Find What
编辑了原始问题,但什么也没有发生,因为我需要以某种方式合并一条指令,以选择它通过公式找到的单元格PEH我使用的公式是数组类型,可以正常使用如果在Excel中手动执行,则需要CTRL+SHIFT+ENTER。此时,我的查找内容:
正在查找最大负数。我添加了Cel。在我的代码中选择,选择单元格,非常感谢。我现在有以下内容,不会产生错误,但如何修改选择
单元格找到的负单元格?Cel.Find What:=Evaluate(“MAX(如果(V17:V57您是新来的,因此请阅读,然后用新的或附加的信息编辑您的问题,然后发表评论以提醒您的关注者。此外,请阅读以了解此网站的工作原理。@Nui此外,您永远不应该在VBA中查看Select
。作为VBA程序员,这也是您可能养成的最糟糕的编程习惯之一Select
容易出现许多不可预见的错误。最好避免使用altogetherRawrplus,我删除了Cel.Select
并替换为.Activate
但这一行现在给我一个调试错误Cel.Find What:=ActiveSheet.Evaluate(=LARGE(V17:V57,COUNTIF(V17:V57,“>0”)+1).Activate
teylyn我的范围内的值是从公式中导出的数字…因此给定范围内的每个单元格都有一个简单的数学公式(该范围内的每个单元格都有一个相同的公式)
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