VBA словарь при транспонировании словаря элементов, я получаю все нули - PullRequest
0 голосов
/ 10 апреля 2020

Первое, что я делаю, это создаю скрипт-словарь, устанавливающий ключи из каждой строки в столбце и ноль в качестве элемента. В последующем коде, когда выполняются условия, я извлекаю элемент ключа как целое число, добавляю к нему 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

1 Ответ

0 голосов
/ 11 апреля 2020

Как только я смог определить, что я добавляю новый ключ вместо того, чтобы обновлять его, мне просто нужно было гуглить, как в словаре могут быть дублирующиеся ключи. Это было в том, как я создавал словарь. Я добавлял ключ как ячейку, а не как значение.

Спасибо за ваши соображения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...