Как в текстовой строке убрать повторы?

Автор Sofim, 04.10.2012, 10:18

« назад - далее »

Sofim

Добрый день!

Дано, например:

А,Агп,Арб,Ббю,Бюд,Г,Д,Зсп,Иэг,Кдр,Пап,Пац,Пр,Сав,Сад,Сау,Сав,Сзо,Смо,Спв,Сск,Ссо,Стм,Ф


Нужно убрать из строки повторяющиеся значения (в данном случае "Сав")

Результат нужно поместить в виде текста в произвольную ячейку.

Заранее спасибо.

kuklp

Sofim, читайте Правила. Где дано, куда разместить... Тут гадать должны?
Я, как всегда, чертовски адекватен... Email: pilipnikop@yandex.ua WM Z206653985942, R334086032478, U238399322728, E332314026771

Sofim

Вот файл пример к моему вопросу...

kuklp

Public Sub www()
    Dim c As Range, s, a, i&, j
    a = [b3].CurrentRegion
    With CreateObject("scripting.dictionary")
        For i = 1 To UBound(a)
            For Each s In Split(a(i, 1), ",")
                .Item(s) = ""
            Next
            a(i, 1) = Join(.keys, ","): .RemoveAll
        Next
    End With
    [d3].Resize(UBound(a)) = a
End Sub

Я, как всегда, чертовски адекватен... Email: pilipnikop@yandex.ua WM Z206653985942, R334086032478, U238399322728, E332314026771

Sofim


Sofim

Доброго времени суток!

Уважаемый KuklP а не подскажите ли, в продолжении темы, как посчитать сумму, зная какому значению в строке соответствует какой "вес" ?
Пример:
А,Агп,Ббб,Г = 2
т.к. в таблице видим "вес"
0,5+0+1+0,5

kuklp

Public Sub www()
    Dim s, a, i&, d As Object
    a = Sheets("Таблица").[a1].CurrentRegion
    Set d = CreateObject("scripting.dictionary")
    For i = 2 To UBound(a)
        d.Item(a(i, 1)) = a(i, 2)
    Next
    a = [b3].CurrentRegion.Resize(, 2)
    With CreateObject("scripting.dictionary")
        For i = 1 To UBound(a)
            For Each s In Split(a(i, 1), ",")
                If d.exists(s) Then
                    If .exists(s) Then
                    Else
                        a(i, 2) = a(i, 2) + d.Item(s)
                    End If
                End If
                .Item(s) = ""
            Next
            a(i, 1) = Join(.keys, ","): .RemoveAll
        Next
    End With
    [d3].Resize(UBound(a), 2) = a: Set d = Nothing
End Sub
Я, как всегда, чертовски адекватен... Email: pilipnikop@yandex.ua WM Z206653985942, R334086032478, U238399322728, E332314026771

sergo44441

Интересная задача, добавил в макрос блок добавления новых блоков (почти половина отсутствовала в справочной таблице). Те значения, что я добавлял на листе с данными, границами не обозначены.
Не торопись, и все успеешь намного быстрее