Я работаю с двумя различными рабочими листами в одной рабочей книге.Моя задача - найти модель # продукта из Sheet1, найти ту же модель # в Sheet2 и получить стоимость этого продукта, расположенного в нескольких столбцах.
Естественно, я попыталсяиспользовать Vlookup, потому что этой функции достаточно для этого запроса.
Я опубликую свой код ниже, а затем объясню проблемы, с которыми я сталкиваюсь.Я новичок в VBA и искал много разных постов в стеке и пробовал разные решения, но безрезультатно.
Private Sub CommandButton1_Click()
Dim tbdCell As Range
Dim model As Range
Dim cell As Range
Dim PAsheet As Worksheet
Dim DB As Worksheet
Dim target As Variant
Set DB = Worksheets("Database")
Set PAsheet = Sheets("Pricing Agreement")
Set tbdCell = Range("N2:N4700")
On Error GoTo ErrHandler:
For Each cell In tbdCell
Set model = cell.Offset(0, -6)
cell = WorksheetFunction.VLookup((CStr(model)), PAsheet.Range(CStr("C2:D2000")), 6, True)
Next cell
Exit Sub
ErrHandler:
Select Case Err.Number
Case 0
Case 1004
cell = "missing"
Resume Next
Case Else
MsgBox Err.Number & vbNewLine & Err.Description
Exit Sub
End Select
End Sub
Таким образом, после отладки и тестирования большинство вещей работает, пока мы не дойдем до линии, где я использую функцию Vlookup.Я неизменно получаю ошибку 1004, даже если данные существуют в другой электронной таблице.Таким образом, ячейки, которые мне нужно заполнить, всегда будут заполняться «отсутствующими», как указано выше в Коде обработки ошибок.
Я пытался использовать версию приложения для функции.Я попытался использовать разные переменные и объявил их как тип Variant.Я даже пытался сделать диапазон table_array только одной строкой с 2-х столбцовым покрытием, пытаясь найти совпадение для одной конкретной модели #.До сих пор, чтобы избежать несоответствия типов, я преобразую «модель» (модель #) в строку, а также диапазон поиска в PAsheet в строку.Последнее, что я попробовал, было не искать точное совпадение (последний аргумент был установлен в true)
Так что в ожидании будущих вопросов о данных, на которых основан Vlookup, я включу необходимую информацию о том, какоба листа отформатированы.
Информация, которая может вам понадобиться:
Мы начинаем с колонки N, где цены отсутствуют в Sheet1 (База данных).
Я установил модель на значение в той же строке, 6 столбцов слева (столбец H).
Тестирование с помощью MsgBox показало, что это работает для меня, и при отладке переменная модели отображает правильную информацию, так что это не проблема.
В PAsheet # моделив столбце C. Первоначально я сделал таблицу поиска из C2: C2000 или около того, но меня убедили, что для работы Vlookup требуется таблица из двух столбцов, поэтому я изменил C2000 на D2000.Теперь диапазон поиска представляет собой таблицу из двух столбцов.
В PAsheet стоимость продукта указана в столбце H, который находится на расстоянии 5 от столбца C. Мне нужно это значение, поэтому я поставил 6 в аргументе column_index.Раньше было 5, потому что я думал, что вы не посчитали первый столбец, но я исправил это.
Наконец я в основном протестировал с «Ложь» в качестве последнего аргумента, но в любом случае это не работает.
Итак, после попытки более двух десятков вариантов и стратегий, я все еще теряюсь в ячейках, которые мне нужно заполнить.
Итак, что я делаю здесь не так??Заранее спасибо.