如果是其他陈述(基本)

时间:2018-10-25 07:39:24

标签: excel vba excel-vba if-statement

需要帮助来创建If else语句。如果对所有字段9求和=对所有字段10求和,则删除字段10,否则在整个列中突出显示字段10。 注意:字段9是“ I”列,字段10是“ J”列

Sub Macro1()

        ActiveSheet.Range("A1").AutoFilter field:=9, Criteria1:="<>"
        ActiveSheet.Range("A1").AutoFilter field:=10, Criteria1:="<>"

 'IF Formula
IF  Activesheet.Range ("I") = Activesheet.Range ("J"),     
        Columns("J:J").Select
        Selection.Delete Shift:=xlToLeft
Else 
     Do nothing
 'If Formula ends
    End Sub

1 个答案:

答案 0 :(得分:1)

您的代码中有一些错误:

IF的基础:

您需要写

If *Condition* Then
*Do smth*
Else 
*Do Smth*
End If

如果您什么都不做,可以带走Else。

过滤器总和:

正如骚扰爸爸在评论中写道:  条件应这样写:

Application.worksheetfunction.sum("I:I") = Application.worksheetfunction.sum("J:J") 

请勿使用Select:

使用select会使您的代码变慢且难以阅读。要优化的第一件事是避免使用select。在此链接中,您将找到避免使用Select的好答案: How to avoid using Select in Excel VBA

最后,您的代码应如下所示:

Sub Macro1()

 ActiveSheet.Range("A1").AutoFilter field:=9, Criteria1:="<>"
 ActiveSheet.Range("A1").AutoFilter field:=10, Criteria1:="<>"

 'IF Formula
     IF  Application.worksheetfunction.sum(Range("I:I").SpecialCells(xlCellTypeVisible)) = _
Application.worksheetfunction.sum(Range("J:J").SpecialCells(xlCellTypeVisible)) Then    
            Columns("J:J").Delete Shift:=xlToLeft 'instead of .Select and Selection.
         End If
     'If Formula ends
    End Sub