Excel VBA方法无法运行且未返回任何错误

Excel VBA方法无法运行且未返回任何错误,vba,excel,large-data,Vba,Excel,Large Data,我打算用我的代码搜索一个充满数据的excel电子表格,并返回p值低于0.05的整行。但是,我没有收到任何语法错误,代码看起来差不多正确。我正在处理一个大数据集,大约780000行条目,所以我不知道这是否是导致错误的原因。代码应该被通读,如果满足上述条件,则返回整行,否则该行应该被忽略。在这里,代码不返回任何内容,也不提供任何错误 Sub GrabRelaventData() Dim i As Long, j As Long Dim s1 As Worksheet, s2 As W

我打算用我的代码搜索一个充满数据的excel电子表格,并返回p值低于0.05的整行。但是,我没有收到任何语法错误,代码看起来差不多正确。我正在处理一个大数据集,大约780000行条目,所以我不知道这是否是导致错误的原因。代码应该被通读,如果满足上述条件,则返回整行,否则该行应该被忽略。在这里,代码不返回任何内容,也不提供任何错误

Sub GrabRelaventData()
    Dim i As Long, j As Long
    Dim s1 As Worksheet, s2 As Worksheet
    Set s1 = Sheets("RNASeq EH developmental 10 hits")
    Set s2 = Sheets("pVal checks")
    For i = 1 To 787731
        If s1.Cells(i, 10) > 0.05 And s1.Cells(i, 16) > 0.05 And s1.Cells(i, 22) > 0.05 And s1.Cells(i, 26) > 0.05 Then
            Exit For
        Else
            For j = 1 To 39
                s2.Cells(i, j).Value = s1.Cells(i, j).Value
            Next j
        End If
    Next i
End Sub

根据你所做的,我认为你已经改变了你的逻辑。将IF…设置为值小于.05时要执行的操作。如果该值更大,您将进入下一个and循环

当您使用EXIT FOR时,它不会进入下一个循环,它认为您已经完成了。有些语言(VB.net)有一个Continue For语句,它将引导您完成循环。假设其余代码正确,请尝试以下操作:

Sub GrabRelaventData()
    Dim i As Long, j As Long
    Dim s1 As Worksheet, s2 As Worksheet
    Set s1 = Sheets("RNASeq EH developmental 10 hits")
    Set s2 = Sheets("pVal checks")
    For i = 1 To 787731
    'Flip your signs - you want to do something when the p-value is LESS THAN, 
'not avoid doing something when it is greater than.
        If s1.Cells(i, 10) < 0.05 And s1.Cells(i, 16) < 0.05 And s1.Cells(i, 22) < 0.05 And s1.Cells(i, 26) < 0.05 Then
            '"Exit For" will take you to the next i - you want use the j loop if the condition is true.
       ' Else - No need for the else this way.
            For j = 1 To 39
                s2.Cells(i, j).Value = s1.Cells(i, j).Value
            Next j
        End If
    Next i
End Sub
子抓取relaventdata()
我和我一样长,我和我一样长
将s1标注为工作表,s2标注为工作表
设置s1=表格(“RNASeq EH开发10次点击”)
设置s2=图纸(“pVal检查”)
对于i=1至787731
“翻转你的标志-当p值小于,
"大于时不回避"。
如果s1.细胞(i,10)<0.05,s1.细胞(i,16)<0.05,s1.细胞(i,22)<0.05,s1.细胞(i,26)<0.05,则
“Exit For”将带您进入下一个i-如果条件为true,您希望使用j循环。
“否则——不需要这样做。
对于j=1到39
s2.单元(i,j).值=s1.单元(i,j).值
下一个j
如果结束
接下来我
端接头
这假设您希望所有p值都小于0.05。如果您想在任何p值小于0.05时采取行动,您可以使用OR而不是AND。
祝你好运

您在这里缺少信息:它做了什么,而不是应该做什么?因为IF语句导致退出,所以如果第一行的p值大于.05,代码将终止。您的代码可能运行得很好。