Сценарии VBA для MS Excel

#excel #vba

#excel #vba

Вопрос:

Добавленное изображение в качестве примера Я пишу сценарий VBA для MS Excel, который включает в себя несколько функций. Я застрял на этом этапе. Примерный пример:-

Если у меня есть excel с этими данными, я хочу выбрать те значения, где присутствует «man» (без учета регистра) в начале / середине / последней и присвоить значение этим строкам.

Ввод excel

 Serial  Name 
1       superman
2       spiderman
3       Thor
4       Hulk
5       Captain America
6       Mandrake
  

В конечном итоге Excel должен быть:

 Serial  Name               Found man
1       superman           Hello
2       spiderman          Hello
3       Thor    
4       Hulk    
5       Captain America 
6       Mandrake           Hello
  

Мне нужен только сценарий VBA, потому что он включает в себя различные другие сложности и функции. Итак, никаких формул Excel, пожалуйста.

Я пытался использовать Range.Find функцию, но в этом случае я не могу назначить «Привет» следующим ячейкам.

ваша помощь будет высоко оценена!!

Ответ №1:

Я думаю, это то, что вы имели в виду, следующий код перебирает все строки с данными и для каждой строки проверяет, находится ли слово «man» внутри этих строк (с использованием Instr функции).

 Sub FindMan()

Dim FindString                  As String
Dim Sht                         As Worksheet

Dim LastRow                     As Long
Dim lRow                        As Long

' modify "Sheet1" to your sheet name
Set Sht = ThisWorkbook.Sheets("Sheet1")

With Sht
    ' find last row in Column "B"
    LastRow = .Cells(.Rows.Count, "B").End(xlUp).Row

    ' you can modify your searched word as you wish at the following line
    FindString = "man"

    ' loop through all rows with data in cells "B"
    For lRow = 2 To LastRow
        If InStr(1, .Cells(lRow, 2), FindString, vbTextCompare) > 0 Then
            .Cells(lRow, 3).Value = "Hello"  ' if found add "Hello" to the cell on the right > Column C
        End If
    Next lRow

    ' add header title for Column C
    .Cells(1, 3).Value = "Found man"    
End With

End Sub
  

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

1. Спасибо!! Это то, на что я смотрел. Я запустил код с удалением точек (.). например: — lastRow = удаленная точка здесь Ячейки (строки. Количество, «B»)….