Данная тема уже поднималась, однако требуемого решения найти и не удалось.
Все макросы есть(в файле примере), находил отдельно рабочие функции, но в виду моей криворукости и малых знаний, свести все воедино с нужными мне параметрами не получается. Уже часа 4 сижу. Все до чего дошел - могу выделить только одну ячейку, далее текст копируется на отдельный лист, там макросом разбивается, блин, еще Месседж бокс каждый раз спрашивает про разделитель (он у меня всегда по умолчанию пробел), макросом удаляются дубли, им же соединяется, после чего копируется в ранее выделенную ячейку. Вариант рабочий, но долгий.
В идеале получить не функцию, а макрос, в теле которого бы добрый человек пометил [vba]
Код
'место, где можно заменить стандартный разделитель используемый при поиске, или перечислить нужные через запятые
[/vba] и [vba]
Код
'место, где можно заменить стандартный разделитель, выдаваемый после объединения
[/vba]. Без всякий Месседж боксов. Если же макросом можно будет выделять диапазон ячеек - вообще супер!
Здравствуйте!
Данная тема уже поднималась, однако требуемого решения найти и не удалось.
Все макросы есть(в файле примере), находил отдельно рабочие функции, но в виду моей криворукости и малых знаний, свести все воедино с нужными мне параметрами не получается. Уже часа 4 сижу. Все до чего дошел - могу выделить только одну ячейку, далее текст копируется на отдельный лист, там макросом разбивается, блин, еще Месседж бокс каждый раз спрашивает про разделитель (он у меня всегда по умолчанию пробел), макросом удаляются дубли, им же соединяется, после чего копируется в ранее выделенную ячейку. Вариант рабочий, но долгий.
В идеале получить не функцию, а макрос, в теле которого бы добрый человек пометил [vba]
Код
'место, где можно заменить стандартный разделитель используемый при поиске, или перечислить нужные через запятые
[/vba] и [vba]
Код
'место, где можно заменить стандартный разделитель, выдаваемый после объединения
[/vba]. Без всякий Месседж боксов. Если же макросом можно будет выделять диапазон ячеек - вообще супер!ceHnau
Sub ertert() Dim x, i&, j&, sp x = Selection.Value 'предварительно выделить несколько ячеек в одной колонке If Not IsArray(x) Then Exit Sub
'http://www.excelworld.ru/board/vba/tricks/obekt_arraylist/9-1-0-49 With CreateObject("System.Collections.ArrayList") For i = 1 To UBound(x) sp = Split(x(i, 1), " ") ' " " исходный разделитель пробел For j = 0 To UBound(sp) If Not .Contains(CStr(sp(j))) Then .Add CStr(sp(j)) 'только уникальные Next j .Sort 'сортируем x(i, 1) = Join(.ToArray, "; ") ' "; " конечный разделитель двоеточие с пробелом .Clear Next i End With Selection.Offset(, 1).Value = x 'в соседнюю колонку пишем результат End Sub
[/vba]
или такой вариант: [vba]
Код
Sub ertert() Dim x, i&, j&, sp x = Selection.Value 'предварительно выделить несколько ячеек в одной колонке If Not IsArray(x) Then Exit Sub
'http://www.excelworld.ru/board/vba/tricks/obekt_arraylist/9-1-0-49 With CreateObject("System.Collections.ArrayList") For i = 1 To UBound(x) sp = Split(x(i, 1), " ") ' " " исходный разделитель пробел For j = 0 To UBound(sp) If Not .Contains(CStr(sp(j))) Then .Add CStr(sp(j)) 'только уникальные Next j .Sort 'сортируем x(i, 1) = Join(.ToArray, "; ") ' "; " конечный разделитель двоеточие с пробелом .Clear Next i End With Selection.Offset(, 1).Value = x 'в соседнюю колонку пишем результат End Sub