#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»)….