Таблица VBA для каждого цикла If Then - текстовое повторение - PullRequest
0 голосов
/ 14 июня 2019

Мне нужен код, который просматривает столбец в таблице, и если в тексте есть определенная строка, то новый текст необходимо ввести в другой столбец.

Итак, просмотрите столбец A (Подтип услуги), введите текст в столбец B (Категория продукта) на основе столбца A. Это то, что у меня есть до сих пор.

Dim productsubtype As Range

For Each productsubtype In Range("RawData[Service Sub Type]")
    If productsubtype.Value = "Training" Then
    Range("RawData[Product Category]").Value = "Education"

    End If

Next productsubtype

Но что происходит, так это то, что он просто заполняет весь столбец «Образование», независимо от того, что указано в столбце А. Что я делаю не так?

1 Ответ

0 голосов
/ 14 июня 2019

Как предложил Матье, вы должны использовать справочную таблицу, а не длинную инструкцию if, если это вообще возможно.

Вероятно, не всегда так просто if this then that, однако вы должны быть в состоянии исключить большинство из этих операторов if с помощью таблицы поиска и иметь некоторые операторы if только для того, что действительно имеет значение.

enter image description here

Сказав это, используя ваш пример и добавив таблицу поиска (в моем примере я назвал это lookupTable), это должно дать вам отправную точку:

Option Explicit

Sub lookupValues()

Dim arrData As Variant: arrData = Range("RawData") 'declare and allocate your table to an array
Dim arrLookup As Variant: arrLookup = Range("lookupTable") 'declare and allocate your lookup table to an array
Dim R As Long, X As Long

For R = LBound(arrData) To UBound(arrData) 'for each row in your data
    For X = LBound(arrLookup) To UBound(arrLookup) 'for each row in the lookup table
        If arrData(R, 1) = arrLookup(X, 1) Then 'if there is a match
            arrData(R, 2) = arrLookup(X, 2) 'allocate the value to the array
            Exit For 'value found, check next
        End If
    Next X
Next R

Range("RawData") = arrData 'put the values back into the table

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