【问题标题】:Excel VBA method fails to run and returns no errorExcel VBA 方法运行失败且不返回错误
【发布时间】:2015-05-11 02:07:30
【问题描述】:

我打算让我的代码在一个填充了数据的 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 语句导致 EXIT FOR,如果第一行的 p 值大于 0.05,您的代码将终止。您的代码可能会按照编写的方式完美运行。

标签: vba excel large-data


【解决方案1】:

根据你的所作所为,我认为你已经颠覆了你的逻辑。如果值 小于 小于 0.05,请将您的 IF...THEN 设置为您想要执行的操作。如果该值更大,您将进入 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 值

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多