Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » VBA - Собрать строку уникальных значений ячеек

Ответить
Настройки темы
VBA - Собрать строку уникальных значений ячеек

Пользователь


Сообщения: 125
Благодарности: 3

Профиль | Отправить PM | Цитировать


Изменения
Автор: stuermer01
Дата: 15-06-2021
Добрый день.

Есть функция, которая собирает строку из текстовых значений ячеек:

Скрытый текст

Function myJoin(myRange As Range, myDelimiter As String)
myJoin = ""
For Each oCell In myRange
If myJoin <> "" And oCell.Value <> "" Then myJoin = myJoin & myDelimiter
myJoin = myJoin & oCell.Value
Next oCell
End Function


Подскажите, как сделать, чтобы она не добавляла повторяющиеся значения, т.е. чтобы каждое значение встречалось только один раз, а его повторы пропускались.

Отправлено: 18:41, 14-06-2021

 

Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Что такое smfJoin и откуда она берётся?!

Цитата stuermer01:
как сделать, чтобы она не добавляла повторяющиеся значения, т.е. чтобы каждое значение встречалось только один раз, а его повторы пропускались. »
Сначала соберите словарь. Потом объедините его ключи.
Скрытый текст
Код: Выделить весь код
Option Explicit

Sub Sample()
    MsgBox JoinUnique(Selection, "*")
End Sub

Function JoinUnique(objRange As Range, strDelimiter As String)
    Dim objDictionary As Object
    Dim objCell As Range
    
    
    Set objDictionary = CreateObject("Scripting.Dictionary")
    
    For Each objCell In objRange.Cells
        If Not IsEmpty(objCell.Value) Then
            If Not objDictionary.Exists(objCell.Value) Then
                objDictionary.Add objCell.Value, 0
            End If
        End If
    Next objCell
    
    If objDictionary.Count > 0 Then
        JoinUnique = Join(objDictionary.Keys, strDelimiter)
    Else
        JoinUnique = ""
    End If
    
    objDictionary.RemoveAll
    Set objDictionary = Nothing
End Function
Это сообщение посчитали полезным следующие участники:

Отправлено: 22:03, 14-06-2021 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Пользователь


Сообщения: 125
Благодарности: 3

Профиль | Отправить PM | Цитировать


Цитата Iska:
Что такое smfJoin и откуда она берётся?! »
myJoin, сорри опечатка, исправил.

У вас вызов Join имеется ввиду myJoin?

Отправлено: 14:00, 15-06-2021 | #3


Пользователь


Сообщения: 125
Благодарности: 3

Профиль | Отправить PM | Цитировать


Цитата Iska:
Сначала соберите словарь. Потом объедините его ключи. »
работает, спасибо.

Последний раз редактировалось stuermer01, 15-06-2021 в 18:32.


Отправлено: 17:56, 15-06-2021 | #4


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Цитата stuermer01:
У вас вызов Join имеется ввиду myJoin? »
Нет, это обычная функция VBA: Join function (Visual Basic for Applications) | Microsoft Docs, сливает одномерный массив в строку.

По работе со словарём рекомендую исчерпывающую статью: Исчерпывающее описание объекта Dictionary - Макросы и программы VBA - Excel - Каталог статей - Perfect Excel.

Отправлено: 22:25, 15-06-2021 | #5



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » VBA - Собрать строку уникальных значений ячеек

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Любой язык - поиск уникальных файлов Peutrov Скриптовые языки администрирования Windows 25 31-05-2020 20:37
2010 - Перенос значений из столбца в строку VanUliK Microsoft Office (Word, Excel, Outlook и т.д.) 14 22-09-2014 23:02
Разное - [решено] Выбор уникальных значений из списка, подсчет их количества и суммы Farrukhjon Microsoft Office (Word, Excel, Outlook и т.д.) 32 09-08-2012 09:16
CMD/BAT - [решено] Поиск уникальных значений по файлу Sat_Kelman Скриптовые языки администрирования Windows 2 22-11-2011 12:12
подсчет уникальных значаний поля в MySQl Vlad Drakula Вебмастеру 17 20-06-2004 22:48




 
Переход