#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