Показать полную графическую версию : Собрать строку уникальных значений ячеек
stuermer01
14-06-2021, 18:41
Добрый день.
Есть функция, которая собирает строку из текстовых значений ячеек:
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
Подскажите, как сделать, чтобы она не добавляла повторяющиеся значения, т.е. чтобы каждое значение встречалось только один раз, а его повторы пропускались.
Что такое smfJoin и откуда она берётся?!
как сделать, чтобы она не добавляла повторяющиеся значения, т.е. чтобы каждое значение встречалось только один раз, а его повторы пропускались. »
Сначала соберите словарь. Потом объедините его ключи.
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
stuermer01
15-06-2021, 14:00
Что такое smfJoin и откуда она берётся?! »
myJoin, сорри опечатка, исправил.
У вас вызов Join имеется ввиду myJoin?
stuermer01
15-06-2021, 17:56
Сначала соберите словарь. Потом объедините его ключи. »
работает, спасибо.
У вас вызов Join имеется ввиду myJoin? »
Нет, это обычная функция VBA: Join function (Visual Basic for Applications) | Microsoft Docs (https://docs.microsoft.com/en-us/office/vba/language/reference/user-interface-help/join-function), сливает одномерный массив в строку.
По работе со словарём рекомендую исчерпывающую статью: Исчерпывающее описание объекта Dictionary - Макросы и программы VBA - Excel - Каталог статей - Perfect Excel (http://perfect-excel.ru/publ/excel/makrosy_i_programmy_vba/ischerpyvajushhee_opisanie_obekta_dictionary/7-1-0-101).
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.