Страницы: 1
RSS
Объединить несколько списков в один без дубликатов
 
Как сделать 1 результирующий столбец из этих 3, такой, чтоб при добавлении данных в один из данных столбцов, они добавлялись и в результирующий.
Так же нужно чтоб результирующий столбец был без дубликатов.
 
откройте свой файл, выполните этот макрос:
Код
Sub JoinData()
  Dim d, a, r&, c&
  a = [b4].CurrentRegion: Set d = CreateObject("Scripting.Dictionary")
  For r = 1 To UBound(a)
    For c = 1 To UBound(a, 2)
      If Not IsEmpty(a(r, c)) Then d(a(r, c)) = 0
    Next
  Next
  a = d.keys: [f4].Resize(UBound(a), 1) = WorksheetFunction.Transpose(a)
End Sub
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Ігор Гончаренко, Подскажите, реально ли решить эту задачу формулой?
 
Samyrro054, Samyrro054, формулой ....постараться нужно...
Не бойтесь совершенства. Вам его не достичь.
 
Вариант PQ
 
Samyrro054, не очень решение но вдруг подойдет. Форматируете списки как умные таблицы...
Код
=ЕСЛИОШИБКА(ЕСЛИОШИБКА(ЕСЛИОШИБКА(ИНДЕКС(Список1;ПОИСКПОЗ(1;ИНДЕКС((СЧЁТЕСЛИ($E$3:E3;Список1)=0)/1;0);0));ИНДЕКС(Список2;ПОИСКПОЗ(1;ИНДЕКС((СЧЁТЕСЛИ($E$3:E3;Список2)=0)/1;0);0)));ИНДЕКС(Список3;ПОИСКПОЗ(1;ИНДЕКС((СЧЁТЕСЛИ($E$3:E3;Список3)=0)/1;0);0)));"")
Не бойтесь совершенства. Вам его не достичь.
 
в макросе, который я написал, удалите все переносы строк, скопируйте полученный текст в ячейку и попробуйте рассматривая ее содержимое понять, что в нем написано
формула будет приблизительно такой же длины и приблизительно на столько же удобна для чтения и понимания того, что в ней написано, как и макрос лишенный разделителей строк.
Изменено: Ігор Гончаренко - 25.04.2020 16:04:29
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
=IFERROR(INDEX(
INDEX(Диапазон_Списков;N(INDEX(MOD(ROW($A$1:INDEX(A:A;ROWS(Диапазон_Списков)*COLUMNS(Диапазон_Списков)))-1;ROWS(Диапазон_Списков))+1;));
N(INDEX(INT((ROW($A$1:INDEX(A:A;ROWS(Диапазон_Списков)*COLUMNS(Диапазон_Списков)))-1)/ROWS(Диапазон_Списков))+1;)));
MATCH(0;INDEX(COUNTIF($G$3:G3;IF(Диапазон_Списков="";"*";Диапазон_Списков));N(INDEX(MOD(ROW($A$1:INDEX(A:A;ROWS(Диапазон_Списков)*COLUMNS(Диапазон_Списков)))-1;ROWS(Диапазон_Списков))+1;));
N(INDEX(INT((ROW($A$1:INDEX(A:A;ROWS(Диапазон_Списков)*COLUMNS(Диапазон_Списков)))-1)/ROWS(Диапазон_Списков))+1;)));));"")
Изменено: БМВ - 25.04.2020 16:23:59
По вопросам из тем форума, личку не читаю.
 
формулами, но с кучей доп.столбцов
 
Формула
Код
=IFERROR(IFERROR(IFERROR(INDEX(B$4:B$65;MATCH(1;INDEX((COUNTIF(H$3:H3;B$4:B$65)=0)*(B$4:B$65<>"");0);0));INDEX(C$4:C$65;MATCH(1;INDEX((COUNTIF(H$3:H3;C$4:C$65)=0)*(C$4:C$65<>"");0);0)));INDEX(D$4:D$65;MATCH(1;INDEX((COUNTIF(H$3:H3;D$4:D$65)=0)*(D$4:D$65<>"");0);0)));"")
Изменено: jakim - 25.04.2020 17:56:26
 
и кросс
По вопросам из тем форума, личку не читаю.
Страницы: 1
Наверх