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

Вход

Регистрация

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

 

= Мир MS Excel/Поиск одинаковых пар в массиве - Мир MS Excel

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

Excel 2007
День добрый. Дайте пожалуйста подсказку :
есть массив: 5 столбцов и 100 строк. Анализ (поиск) построчный! Как найти все повторяющиеся ПАРЫ (или даже тройки) ячеек и, например, раскрасить уникальными цветами(каждый случай - 1 цвет). Последовательность расположения не важна, - т.е. первая пара может быть например в 3 и 5 столбце и такая(-ие) же пара, в другой строке, но в других столбцах. В приложенном файле каждый случай выделен уникальным цветом, а если содержимое ячейки участвует в разных случаях - то цвет рамки совпадает со второй парой. В этом примере (но это из жизни) сложный случай - в разных строчках две тройки чисел совпало.
Спасибо. Алексей.
К сообщению приложен файл: 1648059.xlsx (11.5 Kb)


Сообщение отредактировал Alex77799 - Понедельник, 11.08.2014, 19:15
 
Ответить
СообщениеДень добрый. Дайте пожалуйста подсказку :
есть массив: 5 столбцов и 100 строк. Анализ (поиск) построчный! Как найти все повторяющиеся ПАРЫ (или даже тройки) ячеек и, например, раскрасить уникальными цветами(каждый случай - 1 цвет). Последовательность расположения не важна, - т.е. первая пара может быть например в 3 и 5 столбце и такая(-ие) же пара, в другой строке, но в других столбцах. В приложенном файле каждый случай выделен уникальным цветом, а если содержимое ячейки участвует в разных случаях - то цвет рамки совпадает со второй парой. В этом примере (но это из жизни) сложный случай - в разных строчках две тройки чисел совпало.
Спасибо. Алексей.

Автор - Alex77799
Дата добавления - 11.08.2014 в 18:34
ikki Дата: Понедельник, 11.08.2014, 23:04 | Сообщение № 2
Группа: Друзья
Ранг: Старожил
Сообщений: 1906
Репутация: 504 ±
Замечаний: 0% ±

Excel 2003, 2010
в вашем файле никаких разукрашек не хватит "для сложных случаев"
ибо, к примеру, в 17-й строчке имеются четыре разных пары: 18-22, 18-27, 22-27 и 18-39 и одна тройка 18-22-27

предлагаю выводить результаты в отдельный диапазон.
в приложенном файле сделано для пар.
[vba]
Код
Option Explicit
Sub t()
   Dim a(), d, dd, ddd, dk(), e, i&, j&, s$, n&
    
   a = [a1].CurrentRegion.Value: [h:i].Clear
   Set d = CreateObject("scripting.dictionary")
    
   For i = 1 To UBound(a)
     For j = 1 To UBound(a, 2)
       If d.exists(a(i, j)) Then Set dd = d(a(i, j)) Else Set dd = CreateObject("scripting.dictionary")
       dd(i) = 0&: Set d(a(i, j)) = dd
   Next j, i
    
   dk = d.keys: Set ddd = CreateObject("scripting.dictionary")
   For i = LBound(dk) To UBound(dk) - 1
     Set dd = d(dk(i))
     For j = i + 1 To UBound(dk)
       s = "": n = 0
       For Each e In dd.keys
         If d(dk(j)).exists(e) Then s = s & "|" & e: n = n + 1
       Next
       If n > 1 Then ddd(dk(i) & "|" & dk(j)) = Mid(s, 2)
   Next j, i
   If ddd.Count Then [h1].Resize(ddd.Count, 2).Value = Application.Transpose(Array(ddd.keys, ddd.items))
End Sub
[/vba]

для троек - аналогично.
К сообщению приложен файл: 9273553.xlsm (20.0 Kb)


помощь по Excel и VBA
ikki@fxmail.ru, icq 592842413, skype alex.ikki
 
Ответить
Сообщениев вашем файле никаких разукрашек не хватит "для сложных случаев"
ибо, к примеру, в 17-й строчке имеются четыре разных пары: 18-22, 18-27, 22-27 и 18-39 и одна тройка 18-22-27

предлагаю выводить результаты в отдельный диапазон.
в приложенном файле сделано для пар.
[vba]
Код
Option Explicit
Sub t()
   Dim a(), d, dd, ddd, dk(), e, i&, j&, s$, n&
    
   a = [a1].CurrentRegion.Value: [h:i].Clear
   Set d = CreateObject("scripting.dictionary")
    
   For i = 1 To UBound(a)
     For j = 1 To UBound(a, 2)
       If d.exists(a(i, j)) Then Set dd = d(a(i, j)) Else Set dd = CreateObject("scripting.dictionary")
       dd(i) = 0&: Set d(a(i, j)) = dd
   Next j, i
    
   dk = d.keys: Set ddd = CreateObject("scripting.dictionary")
   For i = LBound(dk) To UBound(dk) - 1
     Set dd = d(dk(i))
     For j = i + 1 To UBound(dk)
       s = "": n = 0
       For Each e In dd.keys
         If d(dk(j)).exists(e) Then s = s & "|" & e: n = n + 1
       Next
       If n > 1 Then ddd(dk(i) & "|" & dk(j)) = Mid(s, 2)
   Next j, i
   If ddd.Count Then [h1].Resize(ddd.Count, 2).Value = Application.Transpose(Array(ddd.keys, ddd.items))
End Sub
[/vba]

для троек - аналогично.

Автор - ikki
Дата добавления - 11.08.2014 в 23:04
ikki Дата: Вторник, 12.08.2014, 04:26 | Сообщение № 3
Группа: Друзья
Ранг: Старожил
Сообщений: 1906
Репутация: 504 ±
Замечаний: 0% ±

Excel 2003, 2010
добавил проверку на тройки и - если уж очень хочется разукрашек - выделение совпадающих позиций цветом для выбранной пары (тройки) - просто щелкайте по ячейкам в столбцах H и I
К сообщению приложен файл: 8468691.xlsm (23.0 Kb)


помощь по Excel и VBA
ikki@fxmail.ru, icq 592842413, skype alex.ikki


Сообщение отредактировал ikki - Вторник, 12.08.2014, 04:26
 
Ответить
Сообщениедобавил проверку на тройки и - если уж очень хочется разукрашек - выделение совпадающих позиций цветом для выбранной пары (тройки) - просто щелкайте по ячейкам в столбцах H и I

Автор - ikki
Дата добавления - 12.08.2014 в 04:26
Alex77799 Дата: Среда, 13.08.2014, 11:36 | Сообщение № 4
Группа: Пользователи
Ранг: Прохожий
Сообщений: 5
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
ikki - огромное Вам спасибо. Проблема, можно считать, в основном решена. Единственный моемент уточню: как определяется диапазон обсчёта?


Сообщение отредактировал Alex77799 - Среда, 13.08.2014, 11:56
 
Ответить
Сообщениеikki - огромное Вам спасибо. Проблема, можно считать, в основном решена. Единственный моемент уточню: как определяется диапазон обсчёта?

Автор - Alex77799
Дата добавления - 13.08.2014 в 11:36
ikki Дата: Среда, 13.08.2014, 14:49 | Сообщение № 5
Группа: Друзья
Ранг: Старожил
Сообщений: 1906
Репутация: 504 ±
Замечаний: 0% ±

Excel 2003, 2010
в коде есть:[vba]
Код
[a1].CurrentRegion.Value
[/vba]текущая область для ячейки A1 (на активном листе)


помощь по Excel и VBA
ikki@fxmail.ru, icq 592842413, skype alex.ikki
 
Ответить
Сообщениев коде есть:[vba]
Код
[a1].CurrentRegion.Value
[/vba]текущая область для ячейки A1 (на активном листе)

Автор - ikki
Дата добавления - 13.08.2014 в 14:49
Alex77799 Дата: Пятница, 15.08.2014, 15:51 | Сообщение № 6
Группа: Пользователи
Ранг: Прохожий
Сообщений: 5
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
ikki вот какой момент случился:
левая верхняя ячейка массива у меня b2, а выводить рез-т нужно с левой верхней n3. Я a1 поменял на b2 и h1 на n3 в коде, но у меня вокруг массива (вплотную) много других данных - и он при исполнении кромсает мне столбцы h и i и в рез-те выводит 1939 строк (столько не может быть).
А эта кнопочка - элемент управления формы?


Сообщение отредактировал Alex77799 - Пятница, 15.08.2014, 15:53
 
Ответить
Сообщениеikki вот какой момент случился:
левая верхняя ячейка массива у меня b2, а выводить рез-т нужно с левой верхней n3. Я a1 поменял на b2 и h1 на n3 в коде, но у меня вокруг массива (вплотную) много других данных - и он при исполнении кромсает мне столбцы h и i и в рез-те выводит 1939 строк (столько не может быть).
А эта кнопочка - элемент управления формы?

Автор - Alex77799
Дата добавления - 15.08.2014 в 15:51
ikki Дата: Пятница, 15.08.2014, 15:58 | Сообщение № 7
Группа: Друзья
Ранг: Старожил
Сообщений: 1906
Репутация: 504 ±
Замечаний: 0% ±

Excel 2003, 2010
эта кнопочка
какая? %)

ну задайте диапазон явно.
к примеру, [vba]
Код
a = [b2:f100].Value
[/vba]


помощь по Excel и VBA
ikki@fxmail.ru, icq 592842413, skype alex.ikki
 
Ответить
Сообщение
эта кнопочка
какая? %)

ну задайте диапазон явно.
к примеру, [vba]
Код
a = [b2:f100].Value
[/vba]

Автор - ikki
Дата добавления - 15.08.2014 в 15:58
Russel Дата: Пятница, 15.08.2014, 16:23 | Сообщение № 8
Группа: Друзья
Ранг: Старожил
Сообщений: 1394
Репутация: 320 ±
Замечаний: 0% ±

Excel 2010
Какая задача стоит - просто красиво разукрасить или как-то вычленить пары (тройки)?

Как вариант - полуручной метод вычленения:
1. Формируем сочетания пар и троек ячеек для каждой строки
2. Макросом-редизайнером разбиваем получившуюся таблицу на один столбец с парами (тройками)
3. Формируем сводную
4. Отключаем фильтром отображение единиц, факультативно - сортируем по убыванию

В приложенном примере сделано для пар.
К сообщению приложен файл: 1648059.xlsm (36.5 Kb)


QIWI 9173973973
 
Ответить
СообщениеКакая задача стоит - просто красиво разукрасить или как-то вычленить пары (тройки)?

Как вариант - полуручной метод вычленения:
1. Формируем сочетания пар и троек ячеек для каждой строки
2. Макросом-редизайнером разбиваем получившуюся таблицу на один столбец с парами (тройками)
3. Формируем сводную
4. Отключаем фильтром отображение единиц, факультативно - сортируем по убыванию

В приложенном примере сделано для пар.

Автор - Russel
Дата добавления - 15.08.2014 в 16:23
Alex77799 Дата: Понедельник, 18.08.2014, 16:02 | Сообщение № 9
Группа: Пользователи
Ранг: Прохожий
Сообщений: 5
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
ikki .... это собственно кнопка старт, запуск макроса. И обнаружил ошибку: в выводе рез-та все строки ошибаются на 1 - короче, если искомая комбинация в 60 строке, - то он пишет, что она в 59. Если Вам не трудно..
 
Ответить
Сообщениеikki .... это собственно кнопка старт, запуск макроса. И обнаружил ошибку: в выводе рез-та все строки ошибаются на 1 - короче, если искомая комбинация в 60 строке, - то он пишет, что она в 59. Если Вам не трудно..

Автор - Alex77799
Дата добавления - 18.08.2014 в 16:02
ikki Дата: Вторник, 19.08.2014, 01:19 | Сообщение № 10
Группа: Друзья
Ранг: Старожил
Сообщений: 1906
Репутация: 504 ±
Замечаний: 0% ±

Excel 2003, 2010
макрос выводит номера строк в диапазоне.
зачем Вам строки листа?


помощь по Excel и VBA
ikki@fxmail.ru, icq 592842413, skype alex.ikki
 
Ответить
Сообщениемакрос выводит номера строк в диапазоне.
зачем Вам строки листа?

Автор - ikki
Дата добавления - 19.08.2014 в 01:19
Alex77799 Дата: Четверг, 21.08.2014, 16:34 | Сообщение № 11
Группа: Пользователи
Ранг: Прохожий
Сообщений: 5
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
...в принципе да, - согласен. Спасибо.
 
Ответить
Сообщение...в принципе да, - согласен. Спасибо.

Автор - Alex77799
Дата добавления - 21.08.2014 в 16:34
ikki Дата: Четверг, 21.08.2014, 17:47 | Сообщение № 12
Группа: Друзья
Ранг: Старожил
Сообщений: 1906
Репутация: 504 ±
Замечаний: 0% ±

Excel 2003, 2010
эта кнопочка
дошло! как до жирафа :D
нет, это не элемент формы.
это автофигура.


помощь по Excel и VBA
ikki@fxmail.ru, icq 592842413, skype alex.ikki
 
Ответить
Сообщение
эта кнопочка
дошло! как до жирафа :D
нет, это не элемент формы.
это автофигура.

Автор - ikki
Дата добавления - 21.08.2014 в 17:47
Мир MS Excel » Вопросы и решения » Вопросы по Excel » Поиск одинаковых пар в массиве (Формулы/Formulas)
  • Страница 1 из 1
  • 1
Поиск:

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