#excel #vba #range #matching
#excel #vba #диапазон #сопоставление
Вопрос:
У меня есть макрос, который просматривает ячейки в столбце для таблицы и сравнивает ее с ячейками в другом, чтобы определить значения другого столбца.
Option Explicit
Sub Find_Matches_Descriptions()
Dim compareRange As Range
Dim toCompare As Range
Dim rFound As Range
Dim cell As Range
Dim I As Long
Call OptimizeCode_Begin
Set compareRange = Worksheets("Car").Range("C4:C100000")
Set toCompare = Worksheets("Day").Range("E2:E100000")
Set rFound = Nothing
For Each cell In toCompare
Set rFound = compareRange.Find(cell)
If Not rFound Is Nothing Then
cell.Offset(, -1).Value = rFound.Offset(, 1)
Set rFound = Nothing
End If
Next cell
Call OptimizeCode_End
End Sub
Макрос выполняет поиск значений в C4: C100000 и E2: E100000, которые совпадают, а затем значения для столбца B на листе Car будут просмотрены и введены в столбец D для рабочего листа Day.
Я нашел этот макрос из другого вопроса на этом веб-сайте и немного изменил его, и он работает. Однако мне интересно, есть ли вероятность, что я смогу сравнить более двух диапазонов для сопоставления. Например, этот макрос сравнивает диапазон C4: C100000 на листе car и сравнивает диапазон E2: E100000 на листе Day и находит совпадение. Я хочу создать макрос, который не только сравнивает эти два диапазона, но и сравнивает диапазоны B4: B100000 на листе car и C2: C100000 на листе Day. Могу ли я по существу найти два совпадения, и эти два совпадения будут определять, какие значения в столбце E на рабочем листе car будут введены в столбец F для рабочего листа Day.
При необходимости запросите разъяснения.
Вот рисунок, показывающий, чего я хочу достичь
Car worksheet
Model Colour code Colour description
GT-R XBG red
Z-Coupe CBG yellow
GT-R CBG pink
Z-Coupe XBG blue
GT-R XBG red
Day worksheet
model Colour code Colour description
GT-R XBG Red
Z-Coupe CBG Yellow
GT-R CBG Pink
Z-Coupe XBG Blue
GT-R XBG Red
GT-R TTC ''No match
Описание цвета для рабочего листа day определяется описанием цвета рабочего листа car.
Поскольку эти модели и цветовые коды для рабочего листа day имеют совпадения в рабочем листе car, описания цветов отображаются для рабочего листа day. Однако на листе автомобиля не было комбинации цветовых кодов модели GT-R и TTC, поэтому в листе дня для этой комбинации не отображается описание цвета.
Комментарии:
1. Вы можете повторить код, который вы использовали выше, для других диапазонов? Как два совпадения определяют значение в F?
2. Например, я приведу вам пример в ситуации. Допустим, у меня есть цветовой код ABC для обоих листов. Описание этого автомобиля — Platinum blue, однако в зависимости от модели автомобиля это описание может измениться. Например, давайте посмотрим на автомобили Nissan. Цветовой код «ABC» для GT-R может быть «platinium blue», но цветовой код «ABC» для Z-Coupe может быть «Red steel». Мне нужно, чтобы этот макрос соответствовал цветовым кодам и моделям для обоих листов. При совпадении будет определено соответствующее описание цвета для рабочего листа дня.
3. Я вижу. Это должно помочь xl-central.com/lookup-multiple-criteria.html Это формульный подход, но вы могли бы адаптироваться к VBA, если бы действительно захотели. Вы могли бы продолжать использовать метод поиска, но каждый раз, когда вы находили модель, вам приходилось проверять код, прежде чем просматривать описание.
4. Похоже, это не работает для меня. Мне также придется использовать еще больше критериев, чем я показал в вопросе. Макрос гораздо более интуитивно понятен для решения моей проблемы, я должен сопоставить модели Nissan, годы выпуска Nissan, цветовые коды Nissan, модели infiniti. годы выпуска infiniti и цветовые коды infiniti, чтобы найти подходящее описание цвета. Я думаю, что для определения конкретных критериев макрос может быть лучше, но, возможно, я ошибаюсь. Несмотря на это, спасибо за совет
5. Возможно, автофильтр.