Вставить текст в ячейку Excel, если какой-либо текст значения ячейки «Не выполнен» в Excel VBA - PullRequest
0 голосов
/ 21 мая 2018

Приведенный ниже код работает отлично, когда весь диапазон равен PASS.Но я хочу любой из диапазона Пример: G5 is "Not Executed" тогда я хочу вставить как SQL Error.

   Sub Test()

     If Worksheets("Before Conversion German Count").Range("G4:G80").Text = "PASS" Then
            Worksheets("INDEX").Range("F30") = "Completed"
         Worksheets("INDEX").Range("F30").Interior.ColorIndex = 43
 ElseIf Worksheets("Before Conversion German Count").Range("G4:G80").Text = "Not Executed" Then
          Worksheets("INDEX").Range("F30") = "SQL Error"
         Worksheets("INDEX").Range("F30").Interior.ColorIndex = 44
  Else: Worksheets("INDEX").Range("F30") = "Validation failed"
       Worksheets("INDEX").Range("F30").Interior.ColorIndex = 3
  End If

  End Sub

Может ли кто-нибудь мне помочь?

Ответы [ 2 ]

0 голосов
/ 21 мая 2018

Как я и предложил в комментариях, давайте использовать COUNTIF

Sub Result()
Const PASS = "PASS"
Const NOT_EXECUTED = "Not Executed"
Dim rg As Range

    Set rg = Worksheets("Before Conversion German Count").Range("G4:G80")

    With Worksheets("INDEX").Range("F30")
        If WorksheetFunction.CountIf(rg, PASS) = rg.Rows.Count Then
            .Value = "Completed"
            .Interior.ColorIndex = 43
        ElseIf WorksheetFunction.CountIf(rg, NOT_EXECUTED) = rg.Rows.Count Then
            .Value = "SQL Error"
            .Interior.ColorIndex = 44
        Else
            .Value = "Validation failed"
            .Interior.ColorIndex = 3
        End If
    End With

End Sub
0 голосов
/ 21 мая 2018

Я думаю, что следующее делает то, что вам нужно:

With Worksheets("INDEX").Range("F30")
    If Not (Worksheets("Before Conversion German Count").Range("G4:G80").Find("Not executed") Is Nothing) Then
        .Value = "SQL Error"
        .Interior.ColorIndex = 44
    ElseIf (Worksheets("Before Conversion German Count").Range("G4:G80").Find("PASS") Is Nothing) Then
        .Value = "Validation failed"
        .Interior.ColorIndex = 3
    Else
        .Value = "Completed"
        .Interior.ColorIndex = 43
    End If
End With

Это запускает With, который указывает на выходную ячейку.

Затем выполняется FIND в диапазонетак что если он может увидеть 1 экземпляр Not Executed , то вы получите «Ошибка SQL» .

Затем он ищет PASS иесли ничего не найдено, то вывод будет «Проверка не удалась» .

В противном случае вывод будет «Завершено» .

Затем он закрываетсяWITH

Я думаю, что эта логика следует вашим намерениям, но вы можете настроить ее по своему желанию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...