Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Уникальные значения из нескольких диапазонов в один - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по Excel » Уникальные значения из нескольких диапазонов в один (Формулы/Formulas)
Уникальные значения из нескольких диапазонов в один
lFJl Дата: Среда, 30.03.2016, 13:18 | Сообщение № 1
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 236
Репутация: 6 ±
Замечаний: 0% ±

Excel 2013
Доброго дня!
Тем про уникальные значения много, но конкретно решения такой задачи я найти не смог!
Итак, у нас 3 таблицы("Б1", "Б2", "Уникальные"), нужно из таблиц "Б1" и "Б2" вытянуть уникальные значения и закинуть их в "Уникальные"
Если формулами это нереально, то может макросом?
К сообщению приложен файл: 3717309.xlsm (11.0 Kb)
 
Ответить
СообщениеДоброго дня!
Тем про уникальные значения много, но конкретно решения такой задачи я найти не смог!
Итак, у нас 3 таблицы("Б1", "Б2", "Уникальные"), нужно из таблиц "Б1" и "Б2" вытянуть уникальные значения и закинуть их в "Уникальные"
Если формулами это нереально, то может макросом?

Автор - lFJl
Дата добавления - 30.03.2016 в 13:18
akobir Дата: Среда, 30.03.2016, 13:31 | Сообщение № 2
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 201
Репутация: 9 ±
Замечаний: 0% ±

Excel 2010
Копировать, вставить, удалить дубликаты в диапазоне - не подойдет?


e-mail: akobir.ismailov@gmail.com
 
Ответить
СообщениеКопировать, вставить, удалить дубликаты в диапазоне - не подойдет?

Автор - akobir
Дата добавления - 30.03.2016 в 13:31
sv2014 Дата: Среда, 30.03.2016, 14:19 | Сообщение № 3
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 226
Репутация: 61 ±
Замечаний: 0% ±

Excel 2013
lFJl, добрый день,протестируйте макрос,кнопка test

[vba]
Код
Sub test()
    Dim z(), i&, m&
    z = Range("A2:D" & Range("A" & Rows.Count).End(xlUp).Row).Value
    With CreateObject("scripting.dictionary"): .CompareMode = 1
    For i = 1 To UBound(z)
         If .exists(z(i, 1)) = False Then
         m = m + 1: .Item(z(i, 1)) = m:  z(m, 1) = z(i, 1)
         Else
         z(.Item(z(i, 1)), 1) = z(i, 1)
         End If
   Next
   For i = 1 To UBound(z)
         If .exists(z(i, 4)) = False Then
         m = m + 1: .Item(z(i, 4)) = m:  z(m, 1) = z(i, 4)
         Else
         z(.Item(z(i, 4)), 1) = z(i, 4)
         End If
   Next
  Range("G2").Resize(.Count, 1).Value = z
   End With
End Sub
[/vba]
К сообщению приложен файл: 3717309_30_03_2.xls (42.0 Kb)
 
Ответить
СообщениеlFJl, добрый день,протестируйте макрос,кнопка test

[vba]
Код
Sub test()
    Dim z(), i&, m&
    z = Range("A2:D" & Range("A" & Rows.Count).End(xlUp).Row).Value
    With CreateObject("scripting.dictionary"): .CompareMode = 1
    For i = 1 To UBound(z)
         If .exists(z(i, 1)) = False Then
         m = m + 1: .Item(z(i, 1)) = m:  z(m, 1) = z(i, 1)
         Else
         z(.Item(z(i, 1)), 1) = z(i, 1)
         End If
   Next
   For i = 1 To UBound(z)
         If .exists(z(i, 4)) = False Then
         m = m + 1: .Item(z(i, 4)) = m:  z(m, 1) = z(i, 4)
         Else
         z(.Item(z(i, 4)), 1) = z(i, 4)
         End If
   Next
  Range("G2").Resize(.Count, 1).Value = z
   End With
End Sub
[/vba]

Автор - sv2014
Дата добавления - 30.03.2016 в 14:19
SLAVICK Дата: Среда, 30.03.2016, 14:20 | Сообщение № 4
Группа: Модераторы
Ранг: Старожил
Сообщений: 2290
Репутация: 766 ±
Замечаний: 0% ±

2019
Вот макрос для примера:
[vba]
Код
Sub d()
Dim dic As Object, m1, m2
Set dic = CreateObject("scripting.dictionary")
m1 = [a2:a30].Value: m2 = [d2:d30].Value
On Error Resume Next
    For i = 1 To UBound(m1)
    dic.Add (m1(i, 1)), i
    Next
    
    For i = 1 To UBound(m2)
    dic.Add (m2(i, 1)), i
    Next
m1 = dic.keys
ReDim m2(0 To UBound(m1), 1 To 1)
    For i = 0 To UBound(m2): m2(i, 1) = m1(i): Next
[g2].Resize(UBound(m2) + 1, 1) = m2
End Sub
[/vba]
К сообщению приложен файл: 8727198.xlsm (19.7 Kb)


Иногда все проще чем кажется с первого взгляда.
 
Ответить
СообщениеВот макрос для примера:
[vba]
Код
Sub d()
Dim dic As Object, m1, m2
Set dic = CreateObject("scripting.dictionary")
m1 = [a2:a30].Value: m2 = [d2:d30].Value
On Error Resume Next
    For i = 1 To UBound(m1)
    dic.Add (m1(i, 1)), i
    Next
    
    For i = 1 To UBound(m2)
    dic.Add (m2(i, 1)), i
    Next
m1 = dic.keys
ReDim m2(0 To UBound(m1), 1 To 1)
    For i = 0 To UBound(m2): m2(i, 1) = m1(i): Next
[g2].Resize(UBound(m2) + 1, 1) = m2
End Sub
[/vba]

Автор - SLAVICK
Дата добавления - 30.03.2016 в 14:20
jakim Дата: Среда, 30.03.2016, 15:19 | Сообщение № 5
Группа: Друзья
Ранг: Старожил
Сообщений: 1197
Репутация: 313 ±
Замечаний: 0% ±

Excel 2010
Можно и формулой.
К сообщению приложен файл: 5982236.xlsx (10.8 Kb)
 
Ответить
Сообщение
Можно и формулой.

Автор - jakim
Дата добавления - 30.03.2016 в 15:19
sv2014 Дата: Среда, 30.03.2016, 15:22 | Сообщение № 6
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 226
Репутация: 61 ±
Замечаний: 0% ±

Excel 2013
lFJl, вариант макроса с двумя массивами(предыдущий мой вариант с одним массивом).

[vba]
Код
Sub test1()
    Dim z, z1, i&, m&
    z = Range("A2:D" & Range("A" & Rows.Count).End(xlUp).Row).Value
    ReDim z1(1 To UBound(z) * 2, 1 To 1)
    With CreateObject("scripting.dictionary"): .CompareMode = 1
    For i = 1 To UBound(z)
         If .exists(z(i, 1)) = False Then
         m = m + 1: .Item(z(i, 1)) = m:  z1(m, 1) = z(i, 1)
         Else
         z1(.Item(z(i, 1)), 1) = z(i, 1)
         End If
   Next
   For i = 1 To UBound(z)
         If .exists(z(i, 4)) = False Then
         m = m + 1: .Item(z(i, 4)) = m:  z1(m, 1) = z(i, 4)
         Else
         z1(.Item(z(i, 4)), 1) = z(i, 4)
         End If
   Next
  Range("H2").Resize(.Count, 1).Value = z1
   End With
End Sub
[/vba]
 
Ответить
СообщениеlFJl, вариант макроса с двумя массивами(предыдущий мой вариант с одним массивом).

[vba]
Код
Sub test1()
    Dim z, z1, i&, m&
    z = Range("A2:D" & Range("A" & Rows.Count).End(xlUp).Row).Value
    ReDim z1(1 To UBound(z) * 2, 1 To 1)
    With CreateObject("scripting.dictionary"): .CompareMode = 1
    For i = 1 To UBound(z)
         If .exists(z(i, 1)) = False Then
         m = m + 1: .Item(z(i, 1)) = m:  z1(m, 1) = z(i, 1)
         Else
         z1(.Item(z(i, 1)), 1) = z(i, 1)
         End If
   Next
   For i = 1 To UBound(z)
         If .exists(z(i, 4)) = False Then
         m = m + 1: .Item(z(i, 4)) = m:  z1(m, 1) = z(i, 4)
         Else
         z1(.Item(z(i, 4)), 1) = z(i, 4)
         End If
   Next
  Range("H2").Resize(.Count, 1).Value = z1
   End With
End Sub
[/vba]

Автор - sv2014
Дата добавления - 30.03.2016 в 15:22
_Boroda_ Дата: Среда, 30.03.2016, 19:44 | Сообщение № 7
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16666
Репутация: 6478 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Еще вариант массивной формулой
Код
=ЕСЛИОШИБКА(НАИМЕНЬШИЙ(ЕСЛИ(СЧЁТЕСЛИ(A$1:D$99;СТРОКА($1:$99));СТРОКА($1:$99));СТРОКА(G1));"")
К сообщению приложен файл: 3717309_1.xlsm (12.1 Kb)


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеЕще вариант массивной формулой
Код
=ЕСЛИОШИБКА(НАИМЕНЬШИЙ(ЕСЛИ(СЧЁТЕСЛИ(A$1:D$99;СТРОКА($1:$99));СТРОКА($1:$99));СТРОКА(G1));"")

Автор - _Boroda_
Дата добавления - 30.03.2016 в 19:44
lFJl Дата: Четверг, 31.03.2016, 06:16 | Сообщение № 8
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 236
Репутация: 6 ±
Замечаний: 0% ±

Excel 2013
akobir, sv2014, SLAVICK, jakim, _Boroda_,
Спасибо вам! Буду разбираться!
У меня будут значения не только числовые но и буквенно-числовые, не все формулы справляются почему-то.
С сортировкой кстати тоже здорово было бы! Сори, что сразу этого не написал, не знал что можно и так и так.
[moder]Ну так приведите РЕАЛЬНЫЙ пример. 100 с лишним сообщений уже, а все как первый раз. Безобразие!!!


Сообщение отредактировал _Boroda_ - Четверг, 31.03.2016, 07:39
 
Ответить
Сообщениеakobir, sv2014, SLAVICK, jakim, _Boroda_,
Спасибо вам! Буду разбираться!
У меня будут значения не только числовые но и буквенно-числовые, не все формулы справляются почему-то.
С сортировкой кстати тоже здорово было бы! Сори, что сразу этого не написал, не знал что можно и так и так.
[moder]Ну так приведите РЕАЛЬНЫЙ пример. 100 с лишним сообщений уже, а все как первый раз. Безобразие!!!

Автор - lFJl
Дата добавления - 31.03.2016 в 06:16
Мир MS Excel » Вопросы и решения » Вопросы по Excel » Уникальные значения из нескольких диапазонов в один (Формулы/Formulas)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!