как убрать текст после символа или фразы в ячейке vba - PullRequest
0 голосов
/ 11 февраля 2020

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

Примером строки может быть

«Один» Lorem ipsum dolor sit amet, посвященный adipiscing elit «sixty_six» sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.

Желаемый результат после завершения макроса, его задача будет выглядеть следующим образом:

"One" Lorem ipsum dolor sit amet, consittetur adipiscing elit

, поэтому все начинается с "sixty_six" и после будет удален

Код, который у меня есть на данный момент:

Sub removeData()

Dim i As Long
Dim lastRow As Long

lastRow = Cells(Rows.Count, "C").End(xlUp).Row

For i = 2 To lastRow

    If InStr(i.Value, "sixty_six") > 0 Then
        i.Value = Left(i.Value, InStr(i.Value, "sixty_six") - 1)
    End If

Next i


End Sub

Ошибка, которую я получаю, гласит «Неверный квалификатор», но не уверен, как я могу это исправить.

Заранее благодарю за помощь.

1 Ответ

2 голосов
/ 11 февраля 2020

Прежде всего, объявите лист, чтобы вы могли правильно квалифицировать свои объекты здесь. Вы также просматриваете недопустимый диапазон - смотрите правильный путь к l oop по всем строкам в столбце ниже (при условии, что ваши изменяемые строки находятся в Column C)


Предполагая, что ваше значение "sixty_six" появится либо один раз , либо вовсе , вы можете использовать Split для преобразования вашей строки в два элемента, где:

  • Первый элемент - все до "sixty_six"
  • Второй элемент - все после (включая) "sixty_six"

Если «sixty_six» не появляется в строке вся строка будет храниться в первом элементе


Dim ws As Worksheet: Set ws = ThisWorkbook.Sheets("Sheet1")

Dim i As Long, lr As Long
Dim arr

lr = ws.Range("C" & ws.Rows.Count).End(xlUp).Row

For i = 2 To lr
    arr = Split(ws.Range("C" & i), """sixty_six""")

    ws.Range("C" & i) = arr(0)

    arr = ""
Next i

Альтернатива

Вы можете избежать VBA все вместе, просто используя поиск и замените ( CTRL + F ) поиском по шаблону "sixty_six"* и заменой (пустая строка).

Выделите целевой столбец и выберите Replace All.

enter image description here

@ BigBen для вызова решения не-Excel

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...