Если первые символы ячейки - GUF, то удалите GUF, если не оставите это поле пустым. - PullRequest
1 голос
/ 13 марта 2019

Я все еще новичок в кодировании, поэтому я прошу прощения, если я не все понимаю.

Мне нужно проверить каждую ячейку 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

Спасибо за любую помощь / предложения

Cells with Data

Ответы [ 2 ]

1 голос
/ 13 марта 2019

Во-первых, когда вы просматриваете ячейки, лучше всего использовать 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

Надеюсь, это поможет.

1 голос
/ 13 марта 2019

Это то, что вы пытаетесь?

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" & .Rows.Count).End(xlUp).Row

        '~~> Loop through cell in Col D
        For i = 3 To lRow
            If .Range("D" & i).Value Like "GUF*" Then
                .Range("D" & i).Value = Mid(.Range("D" & i).Value, 4)
            End If
        Next i
    End With
End Sub
...