Дубликаты в словарных ключах. Объединить значения словаря - PullRequest
1 голос
/ 05 августа 2020

Можно ли найти все дубликаты в ключах словаря, взять значения из ключей и сохранить один ключ со всеми значениями вместе? Например,

. Посмотрите на приведенную ниже таблицу данных. Если бы я хотел сохранить это как словарь со столбцом «A» в качестве ключа и столбцом «B» в качестве значения:

Таблица данных

Можно ли удалить дубликаты, чтобы у нас был только ОДИН ключ «A» со значением = Спасибо; Вы; За; Помогу?

Ответы [ 2 ]

2 голосов
/ 05 августа 2020

Вы можете сохранить объект Collection (или Dictionary) или массив как элемент в словаре.

Что-то вроде:

EDIT: to распечатать данные словаря

Option Explicit
Sub marine()
    Dim D As Dictionary, C As Collection
    Dim V, W, I As Long, sKey As String
    
V = Range("A1").CurrentRegion
Set D = New Dictionary
    D.CompareMode = TextCompare
    
For I = 2 To UBound(V)
    sKey = V(I, 1)
    If Not D.Exists(sKey) Then
        Set C = New Collection
        C.Add V(I, 2)
        D.Add Key:=sKey, Item:=C
    Else
        D(sKey).Add V(I, 2)
    End If
Next I

For Each V In D.Keys
    For Each W In D(V)
        Debug.Print V, W
    Next W
Next V

End Sub

вывод debug.print

A             Thank
A             You
A             For
A             Helping
B             Car
C             Bus
D             Late
E             Damage

даст вам коллекцию всех элементов, связанных с каждым ключом.

enter image description here

enter image description here


As an aside, to concatenate all the values associated with a unique key, in Excel Office365 you can do this with formulas

Given your data:

E2: =UNIQUE($A$2:$A$9)
F2: =TEXTJOIN(";",TRUE,FILTER($B$2:$B$9,($A$2:$A$9=E2)))

Select F2 and fill down as far as needed

введите описание изображения здесь

0 голосов
/ 05 августа 2020

Вы можете:

1.- Поместите эту формулу в третий столбец для каждой строки, чтобы получить истинное или ложное значение, если ваша запись не уникальна:

= COUNTIF (A: A; A2)> 1 = COUNTIF (A: A; A3)> 1 ... и так далее для каждой из строк

2. - Тогда у вас есть (verdadero = true и Falso = false)

enter image description here

3.- Then you can filter the true values in the 3rd column:

введите описание изображения здесь

И создайте свою строку, но не с A в качестве ключа, потому что ключи не могут дублироваться в словарях. Вам нужно использовать другую структуру данных.

Все предпринятые шаги можно воспроизвести с помощью кода, если вам нужно их автоматизировать, но быстрее выполняются пользователем.

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