Я хочу полностью автоматизировать процесс очистки экспортируемых данных. Я бы хотел:

  • Переместите данные в строках переполнения в их предполагаемый столбец. Я попробовал следующий код в VB. (Это пытается идентифицировать символ @ в письмах и соответственно переместить все адреса электронной почты в два места вправо).

Sub qwerty()
    Dim D As Range, r As Range
    Set D = Intersect(ActiveSheet.UsedRange, Range("D:D"))

For Each r In D
    If Left(r.Text, 2) = "@" Then
        r.Copy r.Offset(0, 1)
        r.Clear
    End If
Next r End Sub

  • Как только данные окажутся в правильном столбце, мне нужно автоматизировать перемещение в правильный ряд. Я могу легко заставить их переместиться вверх, но если один контакт не имеет адреса электронной почты (как пример), тогда электронные письма будут в неправильных строках, когда они переместятся вверх.

1 ответ1

0

Используйте этот код:

Sub qwerty()
    Dim y As Integer, x As Integer

    y = 2
    Do Until Cells(y, 4) = ""
        If Cells(y, 3) = "" Then
            Select Case Left(Cells(y, 4))
                Case "[E": x = 6
                Case "[H": x = 7
                Case "[M": x = 8
                Case "[A": x = 9
                Else: x = 10
            End Select
            Cells(y - 1, x) = Cells(y, 4)
            Rows(y).EntireRow.Delete
        Else
            y = y + 1
        End If
    Loop
End Sub

Несколько замечаний о вашем оригинальном VBA:

  • «Это попытка идентифицировать символ @ в письмах ...»: left(r.Text,2) выбирает первые два символа строки, она никогда не будет равна длинной строки в один символ ("@")! (мой код определяет местоположение на основе первого символа после [)
  • «и, соответственно, переместите все адреса электронной почты на два места вправо» - ваш код имеет значение OFFSET(0,1) , то есть всего один столбец справа, всегда проверяйте согласованность вашего кода.
  • «Как только данные окажутся в правильном столбце, мне нужно автоматизировать перемещение в правильную строку» - мой код выполняет оба шага, кроме более короткого кода, это еще проще.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .