Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
VBA查找什么错误_Vba_Excel_Excel Formula - Fatal编程技术网

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