#excel #vba #if-statement #character
#excel #vba #if-оператор #символ
Вопрос:
Я все еще новичок в программировании, поэтому приношу извинения, если я не все понимаю.
Мне нужно проверить каждую ячейку D3: D5000, начинаются ли они с GUF. Затем удалите из нее GUF. Остальное ничего не делайте.
Это то, что я пытался использовать, но я получаю сообщение об ошибке Do ohne Loop:
Sub RemoveGUFfromcellsstartingwithGUF()
Range("D3").Select
Selection.End(xlDown).Offset(1, 0).Select
ActiveCell = "end"
Range("B1").Select
Do Until ActiveCell = "end"
If ActiveCell = "GUF*" Then
ActiveCell.Value = Mid(Cell, 4, 999999)
End If
ActiveCell.Offset(1, 0).Select
End Sub
Спасибо за любую помощь / предложения
Комментарии:
1. Эмм, как насчет использования поиска / замены? Выполните поиск
"GUF"
на место с помощью""
.
Ответ №1:
Во-первых, при циклическом просмотре ячеек лучше всего использовать For each cell in cells
, тогда не нужно изменять выделение.
Во-первых, задайте диапазон, в котором вы хотите, чтобы он выполнялся.
Sub RemoveGUFfromcellsstartingwithGUF()
dim first_cell as Range
dim last_cell as Range
dim rng as Range
set first_cell = ActiveSheet.Range("D1") 'first cell of your range
set last_cell = ActiveSheet.Range("D5000") 'last cell of your range
set rng = Range(first_cell, last_cell) 'range from first_cell to last_cell
For Each cell in rng.cells 'looping through cells of the range
'What you do here will be done to every cell.
if left(cell.value, 3) = "GUF" then cell.value = Mid(cell.value,4)
Next cell
End Sub
Я надеюсь, что это поможет.
Ответ №2:
Это то, что вы пытаетесь?
Sub Sample()
Dim ws As Worksheet
Dim lRow As Long, i As Long
Set ws = Sheet1 '<~~ Change this to the relevant sheet
With ws
'~~> Find last row in Col D
lRow = .Range("D" amp; .Rows.Count).End(xlUp).Row
'~~> Loop through cell in Col D
For i = 3 To lRow
If .Range("D" amp; i).Value Like "GUF*" Then
.Range("D" amp; i).Value = Mid(.Range("D" amp; i).Value, 4)
End If
Next i
End With
End Sub
Комментарии:
1. Как насчет изменения
If .Range("D" amp; i).Value Like "GUF*" Then
наIf Left(.Range("D" amp; i).Value,3) = "GUF" Then
2. @Yane: Могу я спросить, почему я должен это менять? 🙂 Хотя вы также можете использовать
Left()
. много способов освежевать кошку…3. неудачный выбор слов, то, что он должен сказать, это » Я бы использовал Left() вместо … 🙂
4. @Yane: А, хорошо… Теперь это личный выбор 🙂
5. @Cedric обратите внимание, что в
Set ws = Sheet1
theSheet1
указано VBA-название листа, а не название на вкладке. Если вы хотите использовать название вкладки, используйтеSet ws = ThisWorkbook.Worksheets("EVA")
вместо этого.