Использование поиска и смещения для проверки записей на двух вкладках

Я пытаюсь проверить два набора информации в двух разных вкладках, а затем получить все записи на третьей вкладке, выделяя несоответствия в информации, а также записи, которые присутствуют в наборе, но не в другом. В качестве дополнительной трудности информация, которую мне нужно проверить, не написана точно так же в обеих вкладках. Например: в одном из вкладок продукты называются «Продукт 1, Продукт 2» и т. Д., Тогда как другой использует только цифры.

Я довольно новичок в VBA, и моя лучшая идея на данный момент заключается в выборе столбца Sub Test () Dim Candi_ID As String Dim Full_Name As String Dim i_Row As Object Dim i_Cell As Range Dim MD_Range As Integer Dim i_Cell As Range Sheets ( "M Отчет " ). Выберите MD_Range = Приложение . Рабочий лист . CountA ( Диапазон ( «C: C») )) 'с идентификаторами для R = 2 К MD_Range Candi_ID = Листы ( «Отчет M» ). Ячейки ( R , 3 ) Full_Name = Таблицы ( «Отчет M» ). Ячейки ( R , 1 ) Если Candi_ID <> "" Then With Sheets ( «i Report» ). Диапазон ( «B: B» ) Установите i_Cell = . Найти ( Что : = "*" & Candi_ID , Lookin : = xlValues ) Если i_Cell Неужели ничего тогда Sheets ( "Маячок" ). Range ( «A» & Last_Row + 1 ) = Candi_ID Таблицы ( «Tracker» ). Диапазон ( «A» & Last_Row + 1 ). Интерьер . Цвет = RGB ( 255 , 0 , 0 ) Else Last_Row = Листы ( «Tracker» ). Ячейки (. Rows . Count , "A" ). End ( xlUp ). Строчные таблицы ( «Tracker» ). Range ( «A» & Last_Row + 1 ) = Candi_ID End If If Full_Name <> "" Then If Full_Name = i_Cell . Смещение ( 0 , - 1 ). Затем «полное имя» - это одна ячейка слева от листов ячейки идентификатора ( «Tracker» ). Range ( «C» & Last_Row + 1 ) = Full_Name Else Sheets ( «Tracker» ). Range ( «C» & Last_Row + 1 ) = Full_Name Sheets ( «Tracker» ). Диапазон ( «C» и « Last_Row + ). Интерьер . Color = RGB ( 255 , 0 , 0 ) End If End If End With End If Last_Row = Last_Row + 1 Next R End Sub ID в одном из наборов и с помощью Find, чтобы проверить другой набор для совпадений. После этого я хотел бы использовать Offset в значении Find return, чтобы проверить другие ячейки в строке.

Однако я сталкиваюсь с ошибкой «Object variable или With block variable not set», и я не знаю, что я делаю неправильно.

Ниже приведен код, я бы очень признателен за любую помощь с использованием Offset в этом сценарии (или идеи по более эффективному способу получения результатов).

i_Cell

excel,excel-vba,

0

Ответов: 1


2 принят

Вам понадобится другой тест, если он не установлен в этой строке:Set i_Cell = .Find(What:="*" & Candi_ID, LookIn:=xlValues)

If Full_Name <> vbNullString And Not i_Cell Is Nothing Then

Что-то вроде:

Nothing

Если это так Long, и вы не проверяете это дальше, вы получите сообщение об ошибке.

Кроме того, у вас есть дублирующее объявление, некоторые недостающие объявления и использование, Integerа не Option Explicit. Поместите .Selectвверху всех ваших модулей. Избегайте With, что замедляет ваш код и, Withесли это возможно , использует утверждения.

Я заменил пустую символьную строку ""с vbNullString.

первенствует, первенствует-УВА,
Похожие вопросы
Яндекс.Метрика