В списке поиска данных, если найден один из нескольких критериев, присваивается значение ячейке x VBA. - PullRequest
0 голосов
/ 10 ноября 2018

Поскольку я не смог найти никого, кто бы писал что-то подобное, я задаю этот вопрос.

У меня есть "грязные" данные, и мне нужно их очистить. На картинке в ссылке вы видите список автомобилей, колонка А верна, а остальное неверно

Мне нужен код, который может искать информацию в столбце A, а затем вводить правильную информацию в столбцы F, G, H, I аналогично тому, как показано на рисунке

Набор данных будет более 10000 строк

Если бы код можно было настраивать также, чтобы мы могли добавить больше критериев, которые были бы очень полезны

Большое спасибо за ответы.

Привет

Таблица в вопросе

1 Ответ

0 голосов
/ 11 ноября 2018

Если я правильно понимаю вашу проблему, вы пытаетесь вытащить «Бензин» или «Дизель» и поместить их во второй столбец, «LCV» или «Пассажирский автомобиль» для третьего столбца, а также «Вручную» и «Автомат» в третьем столбце. Если это так, то вы можете выполнить цикл до последнего значения, чтобы пройти через все, а затем вы можете использовать значение InStr, чтобы увидеть, находится ли значение в строке, как они сделали здесь .

Sub CheckEntries()

Dim i As Integer
Dim iend As Integer
Dim rng As Range
Dim str As String
Set rng = 'Put the range you are trying to do test
iend = rng.Rows.Count

' This loops until it makes it to all values
For i = 1 To iend
    str = rng.Cells(i, 1).Value

    If InStr(0, str, "Petrol") > 0 Then
        rng.Cells(i, 2).Value = "Petrol"
    ElseIf InStr(0, str, "Diesel") > 0 Then
        rng.Cells(i, 2).Value = "Diesel"
    Else
        rng.Cells(i, 2).Value = ""
    End If

    If InStr(0, str, "LCV") > 0 Then
        rng.Cells(i, 2).Value = "LCV"
    ElseIf InStr(0, str, "Passenger car") > 0 Then
        rng.Cells(i, 2).Value = "Passenger car"
    Else
        rng.Cells(i, 2).Value = ""
    End If

    If InStr(0, str, "Manual") > 0 Then
        rng.Cells(i, 2).Value = "Manual"
    ElseIf InStr(0, str, "Automatic") > 0 Then
        rng.Cells(i, 2).Value = "Automatic"
    Else
        rng.Cells(i, 2).Value = ""
    End If
Next i
End Sub

Этот код будет пустым, если значение не содержит значение в строке. Это должно помочь с отладкой, если с текстом в столбце 1 что-то не так.

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