Последние записи
- Рандомное слайдшоу
- Событие для произвольной области внутри TImage
- Удаление папки с файлами
- Распечатка файла
- Преобразовать массив байт в вещественное число (single)
- TChromium (CEF3), сохранение изображений
- Как в Delphi XE обнулить таймер?
- Изменить цвет шрифта TextBox на форме
- Ресайз PNG без потери прозрачности
- Вывод на печать графического файла
Интенсив по Python: Работа с API и фреймворками 24-26 ИЮНЯ 2022. Знаете Python, но хотите расширить свои навыки?
Slurm подготовили для вас особенный продукт! Оставить заявку по ссылке - https://slurm.club/3MeqNEk
Online-курс Java с оплатой после трудоустройства. Каждый выпускник получает предложение о работе
И зарплату на 30% выше ожидаемой, подробнее на сайте академии, ссылка - ttps://clck.ru/fCrQw
25th
Янв
Выбор уникальных значений в Microsoft Office Excel
Posted by obzor under VBA
Есть БД, в которой имеются повторяющиеся значения.
Необходимо выбрать уникальные, но при этом с выбором уникальных значений в новую БД должны поместится в одну ячейку, объединенные данные по всем повторяющимся значениям, привязанные к нашим уникальным….
если никто не предложит хороший вариант, то можете попробовать такой макрос:
Sub GroupByResult()
Dim z, i&
z = Range("B4:C" & Range("C" & Rows.Count).End(xlUp).Row).Value
With CreateObject("scripting.dictionary"): .comparemode = 1
For i = 1 To UBound(z)
If Len(.Item(z(i, 1))) > 0 Then
.Item(z(i, 1)) = .Item(z(i, 1)) & ","
End If
.Item(z(i, 1)) = .Item(z(i, 1)) & z(i, 2)
Next i
Range("F16").Resize(.Count, 2).Value = Application.Transpose(Array(.Keys, .Items))
End With
End Sub
p.s. макрос чужой, взял тут на форуме и чуток испортил под текущую задачу
p.p.s. список не отсортирован
Сортировку можно и программно сделать!
можно массив отсортировать (это эффективно, но чуть больше кода).
а можно и вставленный результат на листе макросом отсортировать (это неправильно, но зато просто ).
Макрос с доппривлечением компонента из .Net (чтоб отдельно не сортировать):
Sub GroupByResult2()
Dim z, i&, syscol As Object
z = Range("B4:C" & Range("C" & Rows.Count).End(xlUp).Row).Value
Set syscol = CreateObject("System.Collections.ArrayList")
With CreateObject("scripting.dictionary"): .comparemode = 1
For i = 1 To UBound(z)
.Item(z(i, 1)) = .Item(z(i, 1)) & ", " & z(i, 2)
If Not syscol.Contains(z(i, 1)) Then syscol.Add z(i, 1)
Next i
syscol.Sort: i = 0
ReDim a(1 To .Count, 1 To 3)
For i = 1 To UBound(a)
a(i, 1) = i
a(i, 2) = syscol(i - 1)
a(i, 3) = Mid(.Item(a(i, 2)), 3)
Next
Range("F16").Resize(.Count, 3).Value = a
End With
End Sub
Похожие статьи
Купить рекламу на сайте за 1000 руб
пишите сюда - alarforum@yandex.ru
Да и по любым другим вопросам пишите на почту
пеллетные котлы
Пеллетный котел Emtas
Наши форумы по программированию:
- Форум Web программирование (веб)
- Delphi форумы
- Форумы C (Си)
- Форум .NET Frameworks (точка нет фреймворки)
- Форум Java (джава)
- Форум низкоуровневое программирование
- Форум VBA (вба)
- Форум OpenGL
- Форум DirectX
- Форум CAD проектирование
- Форум по операционным системам
- Форум Software (Софт)
- Форум Hardware (Компьютерное железо)