Не очень опытен в VBA, поэтому я не могу точно сказать, что вы делаете и о чем говорит ваш код, но я решил поделиться этим с вами.На прошлой неделе я должен был создать макробук, который возвращает уникальные записи электрических дефектов, которые наблюдали разные команды во время работы.Я сделал словарь, который прочитал все записи в электронной таблице, а затем распечатал все уникальные записи.Я опубликую код и постараюсь показать вам его.
If .Range("A" & i) <> "" Then
If dict.Exists(data) Then
dict(data) = dict(data) + 1
Else
dict.Add Key:=Data, Item:="1"
End If
End If
Таким образом, код в основном говорит, что если столбец A (я просто инкрементатор) не пустой, то мы будем читатьзаписи столбца А. Данные - это просто переменная, и вы должны установить ее равной диапазону значений, которые вы хотите прочитать в словаре.Очевидно, что словарные ключи уникальны и не могут повторяться, поэтому код спрашивает, существует ли ключ в словаре.Если так, мы добавим один к его количеству или значению.И если нет, мы добавим этот ключ в словарь.В конце цикла в вашем словаре будут храниться все уникальные записи и количество их появления.
Теперь мы можем ссылаться на них или печатать их.
For r = 0 To dict.Count
Sheets("Results").Range("B" & iResults) = dict.Keys(r)
Sheets("Results").Range("C" & iResults) = dict(dict.Keys(r))
Next
Этот второй фрагменткода представляет собой цикл от 0 до количества записей в вашем словаре.Он начинается с нуля, потому что словарь хранится как массив, а массивы VBA - это базовый ноль.Первый оператор будет печатать уникальные ключи для каждого r, пока в словаре не останется больше записей.Второе утверждение напечатает значение или элементы, связанные с ними.Это будет целочисленное значение, равное числу раз, которое уникальная запись была обнаружена в ваших данных.
Этот же метод можно использовать и для других целей, не только для печати данных, но и для ссылки на них и их использования.где-нибудь еще.Но я уверен, что вы обнаружите, что цикл For с dict.Keys (r) - это самый простой способ просмотреть записи в словаре.Мне потребовалось несколько дней, чтобы понять это, и это произвело революцию в моей программе.Надеюсь, это поможет вам.