Каждое значение только один раз в массиве - PullRequest
0 голосов
/ 12 ноября 2018

У меня есть массив, который выглядит так:

ABCZZZZDEFGHGAAA

Я хочу сократить его до каждой буквы только один раз:

ABCZDEFGH

Не нужно сортировать по алфавиту.

Я хочу заполнить ListBox, поэтому важно, чтобы пустые значения не были включены.

Ничего подобного:

ABCZ ____ DEFGH ____

Ответы [ 2 ]

0 голосов
/ 12 ноября 2018
'Not sure if this is what you are looking for but this delete duplicates in column A
Option Explicit
Sub dupedelete()

Dim ws As Worksheet
Dim dict As Object
Dim lastrow As Long
Dim str As String

Set ws = Worksheets("Sheet1")
Set dict = CreateObject("Scripting.Dictionary")

lastrow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row

Do While lastrow > 1
  str = ws.Cells(lastrow, 1).Value

  If dict.exists(str) Then
    ws.Rows(lastrow).EntireRow.Delete
  Else

    dict.Add str, 0
  End If

  lastrow = lastrow - 1
Loop

Set dict = Nothing
End Sub
0 голосов
/ 12 ноября 2018

Вы можете легко получить список уникальных значений с помощью словаря

Dim Uniques As Object

Set Uniques = CreateObject("Scripting.Dictionary")

For Each c In YourArray
    If Not Uniques.exists(c) Then
        Uniques.Add c, c
    End If
Next c

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