Если еще заявление (основное) - PullRequest
0 голосов
/ 25 октября 2018

Нужна помощь в создании оператора 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 голосов
/ 25 октября 2018

Несколько ошибок в вашем коде:

Основы IF:

Вам нужно написать

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

Вы можете взятьВ противном случае, если вы ничего не делаете.

Сумма в фильтре:

Как измученный папа написал в своем комментарии: Условие должно быть записано так:

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

Не используйте Select:

Использование select делает ваш код медленным и трудным для чтения.Первое, что нужно оптимизировать, это избегать использования select.В этой ссылке вы найдете отличный ответ, чтобы избежать использования Select: Как избежать использования Select в 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...