Проблема с реструктуризацией скриптового словаря кода, чтобы не удалять похожие данные - PullRequest
0 голосов
/ 27 сентября 2019

У меня есть код словаря сценариев, который удаляет аналогичные данные.Код удаляет данные, которые являются почти дубликатами, которые я не хочу.

У меня есть данные в этой форме:

USA Test Green
USA Test Blue
India Test Red
India Test White

Я хочу преобразовать данные в эту форму

USA: 
Test Green
Test Blue
India: 
Test Red
Test White

Однако я получаю эти результаты с моим текущимкод

USA: 
Test Green
Test Blue
India: 
Test Red

'<---- missing last observation

Я почти уверен, что это происходит, потому что у меня есть

If Not InStr(1, countrydict(country), data) > 0

в моем коде, и я попытался удалить несколько частей моего кода, но я не былв состоянии заставить это работать.

Мой код следующий

With ActiveSheet
    For iter = 2 To lastrow
        country = Trim(.Cells(iter, 1).Value)
        data = Trim(.Cells(iter, 2).Value)
       If countrydict.Exists(country) Then
        If Not InStr(1, countrydict(country), data) > 0 Then ' <---- This is most likely where I have gone wrong
        countrydict(country) = countrydict(country) & "|" & data ' an array would work but we can instr a string
        End If
        Else
            countrydict.Add country, data
        End If
    Next
    iter = 2
    For Each key In countrydict
        .Cells(iter, 1).Value = key & ":"
        .Cells(iter, 1).Interior.Color = RGB(204, 219, 235)
        .Cells(iter, 1).Font.Size = 11
        .Cells(iter, 1).Font.FontStyle = "Arial"
        .Cells(iter, 1).Font.Bold = True
        iter = iter + 1
        For diter = 0 To UBound(Split(countrydict(key), "|"))
            .Cells(iter, 1).Value = Split(countrydict(key), "|")(diter)
            .Cells(iter, 1).Font.Size = 9
            .Cells(iter, 1).Font.FontStyle = "Arial"
            iter = iter + 1
        Next
    Next
    .Columns("B").Clear
End With

Как всегда, помощь очень ценится.

...