Использование Dic для поиска совпадений и обновления столбцов в VBA

Я пытаюсь выполнить следующую задачу, используя Dictionary : (не спрашивайте, почему: P, я только нашел этот метод и начал использовать его и не смотрел другие возможности, любой лучший метод приветствуется)

У меня есть код ниже и не уверен, где включить строку, которая сравнивает Col R листа «Latency» и Col E листа «DRG»,

Мой код

 Sub IPFinder() Dim cl As Range, Dic As Object Set Dic = CreateObject("Scripting.Dictionary"): Dic.Comparemode = vbTextCompare With Sheets("Latency") For Each cl In .Range("R2:R" & .Cells(Rows.Count, "C").End(xlUp).Row) If Not Dic.exists(cl.Value) Then Dic.Add cl.Value, cl.Row Next cl End With With Sheets("DRG") For Each cl In .Range("AE2:AE" & .Cells(Rows.Count, "A").End(xlUp).Row) If Dic.exists(cl.Value) = "TRUE" Then Sheets("Latency").Cells(Dic(cl.Value), 19) = "IP" End If If Dic.exists(cl.Value) Then Sheets("Latency").Cells(Dic(cl.Value), 19) = "IP" Dic.Remove (cl.Value) End If Next cl End With Set Dic = Nothing End Sub 

после вашего описания:

  • Проверьте Col AE в листе «DRG» для строки «TRUE».

  • Если это найдено, сравните значения в Col E листа «DRG» с Col R листа «Latency».

  • Если совпадение найдено в Листе «Задержка» и если оно имеет значение «ИСТИНА» в листе DRG, обновите текст «IP» в Col S на листе «Задержка».

код должен быть скорректирован следующим образом (см. комментарии):

 Option Explicit Sub IPFinder() Dim cl As Range, Dic As Object Set Dic = CreateObject("Scripting.Dictionary"): Dic.Comparemode = vbTextCompare With Sheets("Latency") For Each cl In .Range("R2:R" & .Cells(Rows.Count, "C").End(xlUp).Row) If Not Dic.exists(cl.Value) Then Dic.Add cl.Value, cl.Row Next cl End With With Sheets("DRG") With .Range("AE1:AE" & .Cells(Rows.Count, "A").End(xlUp).Row) '<--| reference its column AE range from row 1 (header) down to the one corresponding to last column A not empty row .AutoFilter Field:=1, Criteria1:="TRUE" '<--| filter column AE cells with "TRUE" content If Application.WorksheetFunction.Subtotal(103, .Cells) > 1 Then '<--| if any cell found For Each cl In .Resize(.Rows.Count - 1).Offset(1, -26).SpecialCells(xlCellTypeVisible) '<--| loop through column "E" cells correesponding to filtered ones in column "AE" (skipping headers) If Dic.exists(cl.Value) Then Sheets("Latency").Cells(Dic(cl.Value), "S") = "IP" '<--| if cirrent column E cell value matches any "Latency" sheet column R one then write "IP" in "Latency" sheet corresponding column S cell Next End If End With .AutoFilterMode = False End With Set Dic = Nothing End Sub 
  • Эффективные способы использования / доступа к файлам excel с помощью python
  • Записать словарь Python в CSV, где где keys = columns, values ​​= rows
  • SSRS и карты маршрута из данных
  • Excel. Если A1 имеет «xyz», заполните B1 «www.dictionary.com/browse/a1», где гиперссылка внутри B1 относится к xyz вместо просто B1
  • Случайный словарь
  • Объединение массивов со словарем VBA Excel
  • Словарь Vba Результат для другого листа
  • VBA / JIRA / JSON: добавить новый ключ / значение в словарь, обработанный JSON
  • Vba Словарь Результат Не возвращайте правильно
  • VBA: Как преобразовать полные словарные колонки в один столбец на каждую букву?
  • Попытка поиска значения из словаря VBA и повышения ошибки, если ключ не используется?
  • Interesting Posts

    Нераспознанный формат базы данных

    Копирование данных с одной вкладки на другую на основе значений из другой таблицы

    Как скопировать лист между учебниками Excel в Java

    Преобразование нескольких столбцов в один большой столбец (Excel 2010)

    Активировать кнопку формы при условии некоторого состояния

    Настройка ленты Excel: динамическое меню, getContent и OnAction

    Преобразование даты Джулиана (5 или 4 символа) в григорианский и наоборот

    Превосходно считать дубликат в столбце

    Загрузить файл Excel ASP VB.Net

    Добавление безопасности в мою рабочую книгу с помощью VBA

    Excel условное форматирование на основе значений ячейки и смежных ячеек

    Конденсируйте данные в одной строке, чтобы между ячейкой не было пустой ячейки

    VBA vlookup в строке цикла и столбце

    код vba для powerpoint

    Как получить внешний запрос источника данных для выбора данных столбца в предложении where

    Давайте будем гением компьютера.