Я выполняю работу для клиента, где они получают еженедельный отчет клиентов и регионов (два столбца, для клиента & B для региона, на листе) , * Я пропустил другие столбцы в этой таблице ради ясностиINDEX MATCH VBA (возвращает значение, основанное на двух критериях)
Они должны соответствовать цене в этой таблице со справочной электронной таблицей, которую мы будем называть ценами. Каждая комбинация клиентов и регионов дает определенную цену, которая хранится в вышеупомянутой справочной таблице (на этом справочном листе [Цены], Столбец А является клиентом, Столбец B является регионом, Столбец C - цена для клиента A в регионе B) ,
То, что я пытаюсь сделать, это:
на основе А1 (заказчик) и B1 (регион), C1 должна быть (lookupvalue для цены на опорном листе).
Традиционная функция vlookup не будет работать, потому что необходимо выполнить несколько критериев (например, у нас могут быть разные цены для одного и того же клиента в другом регионе).
Я пробовал ниже, но безуспешно
Dim ULastRow As Long
ActiveWorkbook.Worksheets(ActiveSheet.Name).UsedRange
ULastRow = sht.UsedRange.Rows(sht.UsedRange.Rows.Count).Row
Range("C2").FormulaR1C1 = _
"=Index(Range("C:C"), Match(Range("Prices!C1"), Range("Prices!C2:B34"), 0), 0)"
Selection.AutoFill Destination:=Range("C2:C2" & ULastRow)
Смотрите ссылки ниже для примера данных (К сожалению, я не смог добавить их в линию:
Что клиент получает: https://copy.com/EBABGl2EFjyFWcIH
В «Цены» или справочные данные https://copy.com/oSSJuu7Dk4ox84tz
Любые советы будут оценены.
Заранее благодарим!
Могу ли я понимать это правильно ?: У вас есть рабочий лист столбцы A, B и C и их соответствующую информацию. И вы хотите выбрать значение C на основе A и B? – daZza
Зачем вам нужен VBA, а не только некоторые функции поиска в Excel? – vacip
Вы можете ввести формулу массива с индексом/соответствием для поиска по нескольким критериям. Это будет формула, которую вы можете перевести в VBA. Я собираюсь просто сделать это и сказать, что вы пытаетесь вернуть что-то в столбце F: '= index (F: F, match (A1 & B1, CustomerRange & RegionRange, 0))' и введите с помощью CTRL + SHIFT + ENTER – BruceWayne