Добрый день, Есть проблема с тем, чтобы сцепить в одну ячейку данные столбца, но не все подряд, а только уникальные значения. То есть, например, номеру партии "2339" соотвутствуют фамилии покупателей Иванов И., Андреев Е., Ионов О., Попов А., Андреев И., Самсонов У. без повторяющихся ФИО. Я использовала на Листе 1 следующую формулу -
Код
=СцепитьЕсли(Лист2!A:A;A2;Лист2!C:C;", ";)
, но она просто всё сцепляет без удаления повторов.
Помогите, пожалуйста. :shy:
Пример таблицы вложен в файл. Лист 2 - исходная таблица, Лист 1 - то, что я сама сделала...
Добрый день, Есть проблема с тем, чтобы сцепить в одну ячейку данные столбца, но не все подряд, а только уникальные значения. То есть, например, номеру партии "2339" соотвутствуют фамилии покупателей Иванов И., Андреев Е., Ионов О., Попов А., Андреев И., Самсонов У. без повторяющихся ФИО. Я использовала на Листе 1 следующую формулу -
Код
=СцепитьЕсли(Лист2!A:A;A2;Лист2!C:C;", ";)
, но она просто всё сцепляет без удаления повторов.
Помогите, пожалуйста. :shy:
Пример таблицы вложен в файл. Лист 2 - исходная таблица, Лист 1 - то, что я сама сделала...tamara19
tamara19, Вы смотрите, куда размещаете тему. Здесь Готовые решения, а не Вопросы по Эксель. Перенес тему - Прочитайте Правила форума - Оформите формулу тегами (в режиме правки поста выделите формулу и нажмите кнопку fx, пояснялка здесь)
tamara19, Вы смотрите, куда размещаете тему. Здесь Готовые решения, а не Вопросы по Эксель. Перенес тему - Прочитайте Правила форума - Оформите формулу тегами (в режиме правки поста выделите формулу и нажмите кнопку fx, пояснялка здесь)китин
Не судите очень строго:я пытаюсь научиться ЯД 41001877306852
Есть ещё такая UDF, код где-то был на форуме... P.S. не нашёл... [vba]
Код
Function VLOOKUPCOUPLE(Table As Variant, _ SearchColumnNum As Integer, _ SearchValue As Variant, _ RezultColumnNum As Integer, _ Separator_ As String, _ Optional BezPovtorov As Boolean = True)
'Table - таблица, где ищем 'SearchColumnNum - столбец, где ищем 'SearchValue - данные, которые ищем 'RezultColumnNum - столбец, откуда берём результат 'Separator_ - разделитель, желательно вводить с пробелом в конце 'BezPovtorov - если поставить 0, то будут выведены все повторяющиеся совпадения
Dim i As Long, tmp As String, vlk
If TypeName(Table) = "Range" Then Table = Intersect(Table.Parent.UsedRange, Table).Value If BezPovtorov Then With CreateObject("Scripting.Dictionary") For i = 1 To UBound(Table) If Table(i, SearchColumnNum) = SearchValue Then tmp = Table(i, RezultColumnNum) If tmp <> "" Then If Not .Exists(tmp) Then .Add tmp, 0& vlk = vlk & Separator_ & Table(i, RezultColumnNum) End If End If End If Next i End With Else For i = 1 To UBound(Table) If Table(i, SearchColumnNum) = SearchValue Then vlk = vlk & Separator_ & Table(i, RezultColumnNum) End If Next i End If If vlk > 0 Then vlk = Mid(vlk, Len(Separator_) + 1) Else vlk = "" VLOOKUPCOUPLE = vlk End Function
[/vba]
Код
=VLOOKUPCOUPLE(Лист2!A:C;1;A2;3;", ")
Есть ещё такая UDF, код где-то был на форуме... P.S. не нашёл... [vba]
Код
Function VLOOKUPCOUPLE(Table As Variant, _ SearchColumnNum As Integer, _ SearchValue As Variant, _ RezultColumnNum As Integer, _ Separator_ As String, _ Optional BezPovtorov As Boolean = True)
'Table - таблица, где ищем 'SearchColumnNum - столбец, где ищем 'SearchValue - данные, которые ищем 'RezultColumnNum - столбец, откуда берём результат 'Separator_ - разделитель, желательно вводить с пробелом в конце 'BezPovtorov - если поставить 0, то будут выведены все повторяющиеся совпадения
Dim i As Long, tmp As String, vlk
If TypeName(Table) = "Range" Then Table = Intersect(Table.Parent.UsedRange, Table).Value If BezPovtorov Then With CreateObject("Scripting.Dictionary") For i = 1 To UBound(Table) If Table(i, SearchColumnNum) = SearchValue Then tmp = Table(i, RezultColumnNum) If tmp <> "" Then If Not .Exists(tmp) Then .Add tmp, 0& vlk = vlk & Separator_ & Table(i, RezultColumnNum) End If End If End If Next i End With Else For i = 1 To UBound(Table) If Table(i, SearchColumnNum) = SearchValue Then vlk = vlk & Separator_ & Table(i, RezultColumnNum) End If Next i End If If vlk > 0 Then vlk = Mid(vlk, Len(Separator_) + 1) Else vlk = "" VLOOKUPCOUPLE = vlk End Function