как объединить похожие строки кода в одну

#excel

#excel

Вопрос:

Здравствуйте и спасибо за ваше время, у меня есть этот фрагмент кода, который работает отлично, мне просто нужно знать две вещи:

1- Есть ли способ объединить все это в одну строку? что-то вроде If .Cells(K, «D»).Value = «L» или «RF» или «F» или «Dewat *» Тогда

2- Как мне указать оператору if для поиска «Dewat *», из-за орфографических ошибок пользователи могут вводить обезвоживание, ОБЕЗВОЖИВАНИЕ, обезвоживание и так далее.

 If .Cells(K, "D").Value = "DT" Then
    J = J   1
    .Rows(K).EntireRow.Copy Destination:=Worksheets("Trailers").Range("A" amp; J   1)
    .Rows(K).EntireRow.Delete
End If

    If .Cells(K, "D").Value = "L" Then
    J = J   1
    .Rows(K).EntireRow.Copy Destination:=Worksheets("Trailers").Range("A" amp; J   1)
    .Rows(K).EntireRow.Delete
End If

    If .Cells(K, "D").Value = "RF" Then
    J = J   1
    .Rows(K).EntireRow.Copy Destination:=Worksheets("Trailers").Range("A" amp; J   1)
    .Rows(K).EntireRow.Delete
End If

    If .Cells(K, "D").Value = "F" Then
    J = J   1
    .Rows(K).EntireRow.Copy Destination:=Worksheets("Trailers").Range("A" amp; J   1)
    .Rows(K).EntireRow.Delete
End If
  

Комментарии:

1. Что касается вопроса 2, то обычно строку преобразуют в верхний / нижний регистр перед их проверкой.

Ответ №1:

Возможно, это сработает…

 If ((.Cells(K, "D").Value = "DT") Or (.Cells(K, "D").Value = "L") Or (.Cells(K, "D").Value = "RF") Or (.Cells(K, "D").Value = "F")) Then
    J = J   1
    .Rows(K).EntireRow.Copy Destination:=Worksheets("Trailers").Range("A" amp; J   1)
    .Rows(K).EntireRow.Delete
End If
  

Комментарии:

1. Спасибо вам за это, могу ли я также добавить это в середине: .Cells (K, «D»).Value = «Dewa *», .Cells(K, «D»).Value = «DEWA *», .Cells (K, «D»).Value = «dewa *» и так далее? так что мне не нужно возиться с преобразованием верхнего / нижнего регистра.

2. Это выдает мне синтаксическую ошибку, я не знаю, как прикрепить снимок экрана здесь, я сделаю это выше.

3. Вот почему я сказал «возможно»… Если ваш код написан на VB, то обозначение or отличается: learn.microsoft.com/de-de/dotnet/visual-basic /… . Я исправляю ответ.

4. Простите, что снова беспокою вас подобным образом, но я не могу заставить * работать, вот строку, которую я использую: If ((.Cells(K, «E»).Value = «HFMO *»)) Затем

5. If ((.Ячейки(K, «E»).Значение типа «HFMO*»))

Ответ №2:

Пример 1

 Option Explicit

Sub test()

    If .Cells(K, "D").Value = "DT" Or .Cells(K, "D").Value = "L" Or .Cells(K, "D").Value = "RF" Or .Cells(K, "D").Value = "F" Then
        J = J   1
        .Rows(K).EntireRow.Copy Destination:=Worksheets("Trailers").Range("A" amp; J   1)
        .Rows(K).EntireRow.Delete
    End If

End Sub
  

Пример 2

 Option Explicit

Sub test1()

    Dim UserInput As String, SearchInString As String

    With ThisWorkbook.Worksheets("Sheet1")

        UserInput = .Range("A2").Value
        SearchInString = .Range("E1").Value

        If InStr(1, UserInput, SearchInString, vbTextCompare) > 0 Then '<- Check if User Input appears in the search string amp; if the value is greater than 0 means that appears in the string
            MsgBox "Appears"
        End If

    End With

End Sub