Первое, что я делаю, это создаю скрипт-словарь, устанавливающий ключи из каждой строки в столбце и ноль в качестве элемента. В последующем коде, когда выполняются условия, я извлекаю элемент ключа как целое число, добавляю к нему 1 и заменяю 0 на 1 в словаре.
Для тестирования кода, когда я вызываю ключ специально Я получаю 1 за Предмет, как и предполагалось. Когда я перемещаю элементы этого словаря в столбец, он дает мне все нули. Когда я настраиваю его как итерацию For For L oop, помещая элементы в последующие строки в столбце, я все равно получаю все нули.
Меня не беспокоят максимумы, я проверяю только 40 вербовщиков.
Отредактировано: я спал и думал, что добавлю еще тестовый код. Я сделал подсчет словаря сразу после того, как словарь был создан, и он заработал 41. После того, как код прошел, я установил еще один счетчик и обнаружил, что он достигает 42.
Что позволяет иметь два ключа в словарь, которые одинаковы?
Идеи?
LRR и LR ?? переменная последней строки для ссылки
'This creates the dictionary. Recruiter Key with a 0 item
Set RecGoalCount = CreateObject("scripting.dictionary")
For Each RecDesk In Sheets("Recruiters").Range("B2:B" & LRR)
RecGoalCount.Add RecDesk, 0
Next RecDesk
''''Here is the code that will change the dictionary item to a 1. The way _
''''it processes the sheet right now, there is only one instance where all _
''''are true which is why only 1 item gets changed from a 0 to a 1.
RecMatch = 0
For Each job In Sheets("Sheet2").Range("A2:A" & LRS2)
For Each job2 In Sheets("Sheet1").Range("D2:X" & LRS1)
OneOfInQW = WorksheetFunction.CountIf(Sheets("Sheet1").Range("D2:X" & LRS1), job)
CurrentCol = job2.Column
TrgtCol = CurrentCol - 4
TrgtCell = job2.Offset(0, -TrgtCol).Value2
RefCell = job.Offset(0, 1).Value2
If job = job2 And OneOfInQW = 1 And RefCell >= TrgtCell Then
LRS3 = Sheets("Sheet3").Cells(Rows.Count, 1).End(xlUp).Row
TrgtRec = CurrentCol - 1
TrgtCol = CurrentCol - 2
TrgtCell = job2.Offset(0, -TrgtCol).Value2
TrgtKey = job2.Offset(0, -TrgtRec).Value2
Sheets("Sheet3").Range("A" & (LRS3 + 1)).Value = TrgtCell
RecMatch = Int(RecGoalCount(TrgtKey))
RecMatch = RecMatch + 1
RecGoalCount.Item(TrgtKey) = Str(RecMatch)
job2.EntireRow.ClearContents
Sheets("Sheet3").Range("B" & (LRS3 + 1)).Value = job
Sheets("Sheet3").Range("C" & (LRS3 + 1)).Value = job.Offset(0, 1)
job.Clear
job.Interior.ColorIndex = 4
Sheets("Sheet3").Range("A" & (LRS3 + 1)).Interior.ColorIndex = 4
Exit For
End If
Next job2
Next job
Sheets("Recruiters").Range("E2:E" & LRR) = Application.Transpose(RecGoalCount.Items)
'This is where I get all 0s despite a condition in the code changing exactly 1 Item to a 1
Sheets("Recruiters").Range("F2:F" & LRR) = Application.Transpose(RecGoalCount.Keys)
'This is just proving to me that it captured the correct keys with the correct names, check.
Sheets("Recruiters").Range("H2") = RecGoalCount("14CBBPG")
'This proves to me that the Item became a 1
Recs = RecGoalCount.Count
'This proves to me that after the code that changes the item, the total _
count of the dictionary didn't change either.
'This code iterates through the dictionary keys to give the items, and it _
gives me all 0s despite one of the items being turned into a 1
x = 2
For Each Rec In RecGoalCount
Sheets("Recruiters").Range("E" & x) = RecGoalCount(Rec)
x = x + 1
Next Rec