Здравствуйте, не понимаю в чем ошибка, подскаэите пожалуйста почему если нет значения выводит ошибку? при метке ставит предыдущие значение, но мне нужно, если нет значния, то ставить пусто
Здравствуйте, не понимаю в чем ошибка, подскаэите пожалуйста почему если нет значения выводит ошибку? при метке ставит предыдущие значение, но мне нужно, если нет значния, то ставить пустоLOG
Set lookupRange = Лист1.Range("A2:A" & lastRow) Set resultRange = Лист2.Range("C:D")
On Error Resume Next For i = 2 To lastRow + 1 finalResult = Application.WorksheetFunction.VLookup(Cells(i, "A").Value, resultRange, 2, False) If Err Then Err.Clear Cells(i, "C").Value = "" Else Cells(i, "C").Value = finalResult End If Next i On Error GoTo 0 End Sub
[/vba] Используемая у вас функция IsError здесь не лучший выбор, поскольку фактически дважды приходится выполнять ВПР для одной ячейки - сначала проверять на ошибку, а затем еще раз вычислять то же значение, если ошибки нет. Обработчик On Error Resume Next, который у вас, вроде как, упомянут в коде, но закомментирован - здесь самое то. Собственно, я его и реанимировал.
Здравствуйте! Я бы придал Вашей процедуре примерно следующий вид: [vba]
Код
Sub vpr_v2() Dim lastRow As Long Dim lookupRange As Range, resultRange As Range Dim finalResult As Variant Dim i As Long
Set lookupRange = Лист1.Range("A2:A" & lastRow) Set resultRange = Лист2.Range("C:D")
On Error Resume Next For i = 2 To lastRow + 1 finalResult = Application.WorksheetFunction.VLookup(Cells(i, "A").Value, resultRange, 2, False) If Err Then Err.Clear Cells(i, "C").Value = "" Else Cells(i, "C").Value = finalResult End If Next i On Error GoTo 0 End Sub
[/vba] Используемая у вас функция IsError здесь не лучший выбор, поскольку фактически дважды приходится выполнять ВПР для одной ячейки - сначала проверять на ошибку, а затем еще раз вычислять то же значение, если ошибки нет. Обработчик On Error Resume Next, который у вас, вроде как, упомянут в коде, но закомментирован - здесь самое то. Собственно, я его и реанимировал.Gustav
Добрый вечер. Попробуйте вместо функции Application.WorksheetFunction.VLookup использовать Application.VLookup или перед этой строкой вставить строку On Error Resume Next .
Добрый вечер. Попробуйте вместо функции Application.WorksheetFunction.VLookup использовать Application.VLookup или перед этой строкой вставить строку On Error Resume Next .i691198
А я бы вообще через словарь делал. Гораааааздо быстрее работать будет. Юлия, если положите сюда файл в xlsx, то напишу код. Сейчас Ваш файл скачать не могу - он с макросами, а безопасники на работе заблокировали скачивание таких файлов с этого сайта
А я бы вообще через словарь делал. Гораааааздо быстрее работать будет. Юлия, если положите сюда файл в xlsx, то напишу код. Сейчас Ваш файл скачать не могу - он с макросами, а безопасники на работе заблокировали скачивание таких файлов с этого сайта_Boroda_
_Boroda_, спасибо за помощь, словарь для меня пока сложно. Хотя сейчас я пытаюсь посчитать количество через словарь, по типу счетеслимн. Если на днях не разберусь, буду просить помощи на сайте))
_Boroda_, спасибо за помощь, словарь для меня пока сложно. Хотя сейчас я пытаюсь посчитать количество через словарь, по типу счетеслимн. Если на днях не разберусь, буду просить помощи на сайте))LOG