¿Cómo puedo usar un diccionario para almacenar elementos únicos?
He leído la documentación pero lo principal que estoy encontrando es exists
, lo cual funcionaría muy bien si no necesitara preservar el orden de las claves. Esencialmente, cada índice/registro del diccionario hace un identificador único. Por lo tanto, las claves individuales podrían ser iguales siempre y cuando la línea completa sea única.
Dim d
Set d = CreateObject("Scripting.Dictionary")
y = 0
For i = 2 To Cells(2, 1).End(xlDown).Row
'código para verificar la unicidad de los valores
d.Add "Index", y
d.Add "Date", Cells(i, 3)
d.Add "FirstName", Cells(i, 6)
d.Add "LastName", Cells(i, 7)
y = y + 1
Next i
El diccionario se vería así:
lang-txt
Index 1
Date 29/12/2021
FirstName John
LastName Smith
Entonces, usar exists no funcionaría porque podría tener varios firstnames llamados John. Pensé en usar exists anidados, pero no creo que eso funcione tampoco.
Supongo que la pregunta principal es: ¿es el diccionario la mejor manera de hacer esto?
Supongo que todo esto es solo una forma elegante de eliminar duplicados en una lista, ¿sería mejor usar RemoveDuplicates
en un rango?
davy.ai
Basado en el requisito de preservar el orden de las claves y asegurar la unicidad de la línea completa, el uso de
exists
oexists
anidados en un diccionario puede no ser el mejor enfoque. Una alternativa podría ser concatenar los valores de cada registro como una cadena y usarlos como claves en el diccionario. Esto aseguraría que la línea completa sea única y se preserve el orden de las claves.Código de ejemplo:
El diccionario resultante se vería así:
Usar
RemoveDuplicates
en un rango también podría ser una opción viable dependiendo del tamaño de los datos y del nivel de personalización requerido.