Как автоматизировать несколько текстовых фильтров, содержащих последовательности и добавить текстовое значение в столбец справа? - PullRequest
0 голосов
/ 14 февраля 2019

Я пытался реализовать Excel VBA на работе.Я должен вручную классифицировать каждое ключевое слово на категории, и мой текущий процесс представляет собой простой текстовый фильтр, который затем добавляет вручную все ячейки (GIF для демонстрации внизу сообщения).

Сообщество помогло мне получить этодалеко от моего кода VBA - я пытаюсь перебрать диапазон C2: C3 (freehold и leasehold), а затем вернуть значение freehold или lease hold в столбце B рядом с соответствующим ключевым словом.

I'mполностью застрял на том, почему это не работает, и я хотел бы руку.

Вот таблица Excel, которую я использую, чтобы проверить мой макрос на

 Sub LoopRange()
    Dim lastrow, i As Variant
    lastrow = Range("A" & Rows.Count).End(xlUp).Row

    Dim rCell As Range
    Dim rRng As Range

    Set rRng = Sheet1.Range("C2:C3")

    For Each rCol In rRng.Columns
        For Each rCell In rCol.Rows
            Debug.Print rCell.Address, rCell.Value
        Next rCell
    Next rCol

    For i = 2 To lastrow
        If Range("A" & i).Value Like "*rCell.Value*" Or Range("A" & i).Value Like "*rCell.Value" Or Range("A" & i).Value Like "rCell.Value*" Then
            Range("B" & i).Value = "rCell.Value"
        End If
    Next i
End Sub

Обычно есть еще 20-40 терминов, таких как freehold и leasehold - вот почему мне нужно использовать циклическую последовательность.

PS Спасибо тем, кто уже ответил - вы, ребята, были безмерноуже полезно, и я не могу дождаться, чтобы улучшить свои навыки и начать возвращать это сообщество

Текущий процесс ручного добавления классификации ключевых слов.Please view the gif here

Еще раз спасибо, ребята, я действительно ценю это!

1 Ответ

0 голосов
/ 14 февраля 2019

используйте код ниже.

Sub test()
    Dim lastrow, i As Long
    lastrow = Range("A" & Rows.Count).End(xlUp).Row
    For i = 2 To lastrow
        If Range("A" & i).Value Like "*freehold*" Or Range("A" & i).Value Like "*freehold" Or Range("A" & i).Value Like "freehold*" Then
            Range("B" & i).Value = "yes"
        End If
    Next i
End Sub

Выход:

enter image description here

РЕДАКТИРОВАТЬ 1

По запросу попробуйте это с помощью ниже.

Sub LoopRange()
    Dim lastrow As Long, i As Long, lastfilterrow As Long
    lastrow = Range("A" & Rows.Count).End(xlUp).Row
    lastfilterrow = Range("C" & Rows.Count).End(xlUp).Row
    For j = 2 To lastfilterrow
        For i = 2 To lastrow
            If Range("A" & i).Value Like "*" & Range("C" & j).Value & "*" Then
                Range("B" & i).Value = Range("C" & j).Value
            End If
        Next i
    Next j
End Sub

enter image description here

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