若有,;从excel到VBA的语句

若有,;从excel到VBA的语句,vba,excel,Vba,Excel,我对使用VBA有点陌生。我有一个数据表,它从我使用的一个程序中提取数据,并通过Microsoft Query进行过滤。有一列我无法排序,因此我需要使用if and语句删除不需要的数据。我提出了这个if语句,它突出显示了我要删除的行,但我不知道如何将其放入VBA中 =IF(L5="Program",L6<>"lathe"),"2","") =IF(L5=“Program”,L6“车床”),“2”和“) 基本上,我希望VBA查看列L:L。如果单元格=程序,并且下面的单元格不等于车床,

我对使用VBA有点陌生。我有一个数据表,它从我使用的一个程序中提取数据,并通过Microsoft Query进行过滤。有一列我无法排序,因此我需要使用if and语句删除不需要的数据。我提出了这个if语句,它突出显示了我要删除的行,但我不知道如何将其放入VBA中

=IF(L5="Program",L6<>"lathe"),"2","")
=IF(L5=“Program”,L6“车床”),“2”和“)

基本上,我希望VBA查看列L:L。如果单元格=程序,并且下面的单元格不等于车床,我希望删除上面的行。如果单元格不相等,程序将继续查找,直到数据结束。

在VBA中,您将使用If。。。而且。。。然后是结构,因此:

If Range("L5")="Program" And Range("L6") <> "lathe" Then
    'Do something
End If
这个:
创建要查看的范围(列L)
循环该列中的所有单元格(每个循环对应的单元格)
运行我们的IF逻辑和

…如果符合逻辑,则删除整行。

在VBA中,您将使用if。。。而且。。。然后是结构,因此:

If Range("L5")="Program" And Range("L6") <> "lathe" Then
    'Do something
End If
这个:
创建要查看的范围(列L)
循环该列中的所有单元格(每个循环对应的单元格)
运行我们的IF逻辑和

…如果符合逻辑,则删除整行。

这是您的想法。您只需要按照自己的意愿修改格式

If cells(5, "L") = "Program" AND cells(6, "L") <> "Lathe" Then
     cells (6, "M") = 2
Else
     cells (6, "M") = ""
EndIf
如果单元格(5,“L”)=程序,单元格(6,“L”)“车床”,则
单元(6,“M”)=2
其他的
单元格(6,“M”)=“”
恩迪夫

这是你的想法。您只需要按照自己的意愿修改格式

If cells(5, "L") = "Program" AND cells(6, "L") <> "Lathe" Then
     cells (6, "M") = 2
Else
     cells (6, "M") = ""
EndIf
如果单元格(5,“L”)=程序,单元格(6,“L”)“车床”,则
单元(6,“M”)=2
其他的
单元格(6,“M”)=“”
恩迪夫

最好是在列L上循环。假设您的数据是从第3行到第150行

for i = 3 to 150
   if lcase(range("L"&i).value) = "program" and lcase(range("L"&i+1).value) <> "lathe" then
       rows(i).entirerow.delete
   end if
next i
用于i=3到150
如果lcase(范围(“L”&i).value)=“程序”和lcase(范围(“L”&i+1).value)”为“车床”,则
行(i).entirerow.delete
如果结束
接下来我

最好是在列L上循环。假设您的数据是从第3行到第150行

for i = 3 to 150
   if lcase(range("L"&i).value) = "program" and lcase(range("L"&i+1).value) <> "lathe" then
       rows(i).entirerow.delete
   end if
next i
用于i=3到150
如果lcase(范围(“L”&i).value)=“程序”和lcase(范围(“L”&i+1).value)”为“车床”,则
行(i).entirerow.delete
如果结束
接下来我

如何使VBA在整个L:L列上应用您希望一次循环一个单元格通过L列。我将进行编辑以反映此结构。尝试运行时遇到应用程序定义的或对象定义的错误。我的错误-遍历所有列L是可以的,但是当您尝试引用最后一个单元格下面的单元格时,没有一个,因此会出现此错误。尝试一下刚刚发布的修改。我们可以进行一些更改以提高效率,但它们会使代码更难阅读,我不确定这样做是否值得。让我知道你是否也想探索这个问题。我如何使VBA应用于整个L:L列?如果你想在L列中一次循环一个单元格。我将进行编辑以反映此结构。尝试运行时遇到应用程序定义的或对象定义的错误。我的错误-遍历所有列L是可以的,但是当您尝试引用最后一个单元格下面的单元格时,没有一个,因此会出现此错误。尝试一下刚刚发布的修改。我们可以进行一些更改以提高效率,但它们会使代码更难阅读,我不确定这样做是否值得。让我知道你是否还想探索这个。新的逻辑,我认为它仍然会使用一些旧的程序,但它需要使用另一列进行排序。我需要VBA查看E:E列。如果下一行中的单元格与上一行中的单元格重复,请查看该行中的L列,查看该单元格是否显示程序。如果是这样的话,下面的单元格应该是车床。如果不是车床,则删除程序行;如果是车床,则保留两行。如果E列中的单元格不重复,请继续查找。例如,如果E5=E6,如果不继续查找。如果是,请查看L5,看它是否显示Program。如果是这样,请查看L6车床。如果不删除ROW5.New逻辑,我认为它仍将使用一些旧程序,但需要使用另一列对其进行排序。我需要VBA查看E:E列。如果下一行中的单元格与上一行中的单元格重复,请查看该行中的L列,查看该单元格是否显示程序。如果是这样的话,下面的单元格应该是车床。如果不是车床,则删除程序行;如果是车床,则保留两行。如果E列中的单元格不重复,请继续查找。例如,如果E5=E6,如果不继续查找。如果是,请查看L5,看它是否显示Program。如果是这样,请查看L6车床。如果没有,请删除第5行。