Excel VBA 方法失败 运行 和 returns 没有错误

Excel VBA method fails to run and returns no error

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

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...THEN 设置为您在值 less 小于 .05 时要执行的操作。如果该值更大,您将进入 NEXT 并循环。

当你使用 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

这假设您希望所有 p 值都小于 .05。如果您想在任何 p 值 < .05 时采取行动,您可以使用 OR 而不是 AND。 祝你好运!