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

Вход

Регистрация

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

 

= Мир MS Excel/Поиск и подсчет количества уникальных значений в массиве - Мир MS Excel

Старая форма входа
  • Страница 1 из 2
  • 1
  • 2
  • »
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по Excel » Поиск и подсчет количества уникальных значений в массиве (Поиск и подсчет количества уникальных значений в массиве)
Поиск и подсчет количества уникальных значений в массиве
DStuart Дата: Четверг, 24.01.2013, 14:31 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 9
Репутация: 0 ±
Замечаний: 0% ±

Добрый день! Помогите пожалуйста автоматизировать процесс выборки и подсчета количества уникальных значений из двухмерного массива.
Интересует вариант с формулами. Нужно, что бы подсчет велся динамически по мере изменения содержимого массива, а не через интерфейс сводной таблицы. Примерно в каком виде мне это нужно см.в приложенном файле.
За ранее спасибо!
К сообщению приложен файл: 6730889.xls (32.0 Kb)
 
Ответить
СообщениеДобрый день! Помогите пожалуйста автоматизировать процесс выборки и подсчета количества уникальных значений из двухмерного массива.
Интересует вариант с формулами. Нужно, что бы подсчет велся динамически по мере изменения содержимого массива, а не через интерфейс сводной таблицы. Примерно в каком виде мне это нужно см.в приложенном файле.
За ранее спасибо!

Автор - DStuart
Дата добавления - 24.01.2013 в 14:31
DStuart Дата: Четверг, 24.01.2013, 14:37 | Сообщение № 2
Группа: Пользователи
Ранг: Прохожий
Сообщений: 9
Репутация: 0 ±
Замечаний: 0% ±

Да, забыл сказать для меня важно, что бы процесс выборки учитывал регистр.
 
Ответить
СообщениеДа, забыл сказать для меня важно, что бы процесс выборки учитывал регистр.

Автор - DStuart
Дата добавления - 24.01.2013 в 14:37
ikki Дата: Четверг, 24.01.2013, 14:50 | Сообщение № 3
Группа: Друзья
Ранг: Старожил
Сообщений: 1906
Репутация: 504 ±
Замечаний: 0% ±

Excel 2003, 2010
давайте уточним?
вас интересует именно "вариант с формулами" или чтобы подсчёт вёлся "динамически"?
это таки не одно и то же.


помощь по Excel и VBA
ikki@fxmail.ru, icq 592842413, skype alex.ikki
 
Ответить
Сообщениедавайте уточним?
вас интересует именно "вариант с формулами" или чтобы подсчёт вёлся "динамически"?
это таки не одно и то же.

Автор - ikki
Дата добавления - 24.01.2013 в 14:50
DStuart Дата: Четверг, 24.01.2013, 15:19 | Сообщение № 4
Группа: Пользователи
Ранг: Прохожий
Сообщений: 9
Репутация: 0 ±
Замечаний: 0% ±

По поводу формул я имел ввиду без макросов, т.к я в них не силен. Я хочу понимать что я делаю)
По поводу "динамически" я имею ввиду если меняется изменяется содержимое массива, то итоги подсчитываются автоматически (кол-во совпадений в массиве), а не путем ручных манипуляций например через "сводную таблицу".
 
Ответить
СообщениеПо поводу формул я имел ввиду без макросов, т.к я в них не силен. Я хочу понимать что я делаю)
По поводу "динамически" я имею ввиду если меняется изменяется содержимое массива, то итоги подсчитываются автоматически (кол-во совпадений в массиве), а не путем ручных манипуляций например через "сводную таблицу".

Автор - DStuart
Дата добавления - 24.01.2013 в 15:19
Michael_S Дата: Четверг, 24.01.2013, 15:31 | Сообщение № 5
Группа: Друзья
Ранг: Старожил
Сообщений: 2012
Репутация: 373 ±
Замечаний: 0% ±

Excel2016
Цитата (DStuart)
а не путем ручных манипуляций например через "сводную таблицу".
ваш вариант данных, даже если попросите - в сводную не загнать...
Доп. столбцы тоже, как и макросы - не устраивают? Диапазон в реале какой?
 
Ответить
Сообщение
Цитата (DStuart)
а не путем ручных манипуляций например через "сводную таблицу".
ваш вариант данных, даже если попросите - в сводную не загнать...
Доп. столбцы тоже, как и макросы - не устраивают? Диапазон в реале какой?

Автор - Michael_S
Дата добавления - 24.01.2013 в 15:31
ikki Дата: Четверг, 24.01.2013, 15:33 | Сообщение № 6
Группа: Друзья
Ранг: Старожил
Сообщений: 1906
Репутация: 504 ±
Замечаний: 0% ±

Excel 2003, 2010
на всякий случай - макрос готов (запускается не по кнопке, а автоматически при изменении данных), но выкладывать пока не буду.
пс. "двумерный", "чтобы", "в виду"... что там ещё у вас в загашнике? wink


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


Сообщение отредактировал ikki - Четверг, 24.01.2013, 15:35
 
Ответить
Сообщениена всякий случай - макрос готов (запускается не по кнопке, а автоматически при изменении данных), но выкладывать пока не буду.
пс. "двумерный", "чтобы", "в виду"... что там ещё у вас в загашнике? wink

Автор - ikki
Дата добавления - 24.01.2013 в 15:33
DStuart Дата: Четверг, 24.01.2013, 15:44 | Сообщение № 7
Группа: Пользователи
Ранг: Прохожий
Сообщений: 9
Репутация: 0 ±
Замечаний: 0% ±

Доб столбцы как вариант можно (потом спрячу), макросы в крайнем случае.
Диапазон 256x256 ячеек. Могу собственно приложить вырезку того, что нужно свести. Это расчет решетки Пеннета (расчет генотипов).
 
Ответить
СообщениеДоб столбцы как вариант можно (потом спрячу), макросы в крайнем случае.
Диапазон 256x256 ячеек. Могу собственно приложить вырезку того, что нужно свести. Это расчет решетки Пеннета (расчет генотипов).

Автор - DStuart
Дата добавления - 24.01.2013 в 15:44
DStuart Дата: Четверг, 24.01.2013, 15:55 | Сообщение № 8
Группа: Пользователи
Ранг: Прохожий
Сообщений: 9
Репутация: 0 ±
Замечаний: 0% ±

Во вложении вырезка из того, где нужно проводить выборку. Комбинации могут быть сколь угодно разными.
 
Ответить
СообщениеВо вложении вырезка из того, где нужно проводить выборку. Комбинации могут быть сколь угодно разными.

Автор - DStuart
Дата добавления - 24.01.2013 в 15:55
MCH Дата: Четверг, 24.01.2013, 16:27 | Сообщение № 9
Группа: Админы
Ранг: Старожил
Сообщений: 2003
Репутация: 751 ±
Замечаний: ±

Вариант формульного решения с доп. столбцом (можно и без поп. столбца, только формула увеличится в размере раза в три, и считать она будет медленнее)

Формула получилась нечувствительна к регистру
К сообщению приложен файл: 1204082.xls (29.5 Kb)


Сообщение отредактировал MCH - Четверг, 24.01.2013, 16:29
 
Ответить
СообщениеВариант формульного решения с доп. столбцом (можно и без поп. столбца, только формула увеличится в размере раза в три, и считать она будет медленнее)

Формула получилась нечувствительна к регистру

Автор - MCH
Дата добавления - 24.01.2013 в 16:27
Michael_S Дата: Четверг, 24.01.2013, 17:06 | Сообщение № 10
Группа: Друзья
Ранг: Старожил
Сообщений: 2012
Репутация: 373 ±
Замечаний: 0% ±

Excel2016
Цитата (DStuart)
Диапазон 256x256 ячеек

и офис 2003? (впрочем, не особо важно)... тяжеловато для формулы будет, может памяти не хватить...
 
Ответить
Сообщение
Цитата (DStuart)
Диапазон 256x256 ячеек

и офис 2003? (впрочем, не особо важно)... тяжеловато для формулы будет, может памяти не хватить...

Автор - Michael_S
Дата добавления - 24.01.2013 в 17:06
Michael_S Дата: Пятница, 25.01.2013, 04:49 | Сообщение № 11
Группа: Друзья
Ранг: Старожил
Сообщений: 2012
Репутация: 373 ±
Замечаний: 0% ±

Excel2016
С помощью доп. таблицы, по размеру равной исходной. Регистр различает. Для проверки - F9
К сообщению приложен файл: Coincidence.xls (50.5 Kb)


Сообщение отредактировал Michael_S - Пятница, 25.01.2013, 05:12
 
Ответить
СообщениеС помощью доп. таблицы, по размеру равной исходной. Регистр различает. Для проверки - F9

Автор - Michael_S
Дата добавления - 25.01.2013 в 04:49
DStuart Дата: Пятница, 25.01.2013, 10:16 | Сообщение № 12
Группа: Пользователи
Ранг: Прохожий
Сообщений: 9
Репутация: 0 ±
Замечаний: 0% ±

То что надо. Работает!!! Всем большое спасибо!
 
Ответить
СообщениеТо что надо. Работает!!! Всем большое спасибо!

Автор - DStuart
Дата добавления - 25.01.2013 в 10:16
ikki Дата: Пятница, 25.01.2013, 15:37 | Сообщение № 13
Группа: Друзья
Ранг: Старожил
Сообщений: 1906
Репутация: 504 ±
Замечаний: 0% ±

Excel 2003, 2010
Цитата (ikki)
макрос готов, но выкладывать пока не буду.

каюсь - был неправ. макрос может понадобиться к.-нибудь другому.
выкладываю (хотя он очень простой):
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
   Dim d As Object, arr, el, i&, j&, n&
   If Intersect(Target, [диапазон]) Is Nothing Then Exit Sub
   Set d = CreateObject("scripting.dictionary")
   d.CompareMode = 0
   arr = [диапазон].Value
   For Each el In arr
       If Not IsEmpty(el) Then d.Item(el) = d.Item(el) + 1
   Next
   n = Application.Min(Rows.Count - [результат].Rows(1).Row + 1, UBound(arr) * UBound(arr, 2))
   Application.ScreenUpdating = False
   With [результат].Resize(n, 2)
       .ClearContents
       .Columns(1).Resize(d.Count) = Application.Transpose(d.Keys)
       .Columns(2).Resize(d.Count) = Application.Transpose(d.Items)
   End With
End Sub
[/vba]

макрос должен быть размещен в модуле листа (того, где находится исх. диапазон с именем "диапазон")
результирующий список может находиться на любом листе.
верхняя левая ячейка списка должна иметь имя "результат".
К сообщению приложен файл: 3680442.xls (46.5 Kb)


помощь по Excel и VBA
ikki@fxmail.ru, icq 592842413, skype alex.ikki
 
Ответить
Сообщение
Цитата (ikki)
макрос готов, но выкладывать пока не буду.

каюсь - был неправ. макрос может понадобиться к.-нибудь другому.
выкладываю (хотя он очень простой):
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
   Dim d As Object, arr, el, i&, j&, n&
   If Intersect(Target, [диапазон]) Is Nothing Then Exit Sub
   Set d = CreateObject("scripting.dictionary")
   d.CompareMode = 0
   arr = [диапазон].Value
   For Each el In arr
       If Not IsEmpty(el) Then d.Item(el) = d.Item(el) + 1
   Next
   n = Application.Min(Rows.Count - [результат].Rows(1).Row + 1, UBound(arr) * UBound(arr, 2))
   Application.ScreenUpdating = False
   With [результат].Resize(n, 2)
       .ClearContents
       .Columns(1).Resize(d.Count) = Application.Transpose(d.Keys)
       .Columns(2).Resize(d.Count) = Application.Transpose(d.Items)
   End With
End Sub
[/vba]

макрос должен быть размещен в модуле листа (того, где находится исх. диапазон с именем "диапазон")
результирующий список может находиться на любом листе.
верхняя левая ячейка списка должна иметь имя "результат".

Автор - ikki
Дата добавления - 25.01.2013 в 15:37
Michael_S Дата: Пятница, 25.01.2013, 15:47 | Сообщение № 14
Группа: Друзья
Ранг: Старожил
Сообщений: 2012
Репутация: 373 ±
Замечаний: 0% ±

Excel2016
Я бы для себя тоже предпочел макрос... но по заявке ТС - формулы.
 
Ответить
СообщениеЯ бы для себя тоже предпочел макрос... но по заявке ТС - формулы.

Автор - Michael_S
Дата добавления - 25.01.2013 в 15:47
Vyacheslav Дата: Пятница, 05.04.2013, 08:32 | Сообщение № 15
Группа: Пользователи
Ранг: Новичок
Сообщений: 11
Репутация: 0 ±
Замечаний: 0% ±

ikki, Отличный макрос!

А как сделать, если необходимо применить этот макрос на несколько диапазонов и каждый диапазон выводить отдельно?
 
Ответить
Сообщениеikki, Отличный макрос!

А как сделать, если необходимо применить этот макрос на несколько диапазонов и каждый диапазон выводить отдельно?

Автор - Vyacheslav
Дата добавления - 05.04.2013 в 08:32
ikki Дата: Суббота, 06.04.2013, 06:15 | Сообщение № 16
Группа: Друзья
Ранг: Старожил
Сообщений: 1906
Репутация: 504 ±
Замечаний: 0% ±

Excel 2003, 2010
например?


помощь по Excel и VBA
ikki@fxmail.ru, icq 592842413, skype alex.ikki
 
Ответить
Сообщениенапример?

Автор - ikki
Дата добавления - 06.04.2013 в 06:15
Vyacheslav Дата: Суббота, 06.04.2013, 09:04 | Сообщение № 17
Группа: Гости
есть «диапазон1» и «диапазон2» и нужно вывести «результат1» и«результат2».

Как сложить структуру макроса, если у меня диапазонов может быть больше 2х и результат нужно выводить на каждый диапазон
 
Ответить
Сообщениеесть «диапазон1» и «диапазон2» и нужно вывести «результат1» и«результат2».

Как сложить структуру макроса, если у меня диапазонов может быть больше 2х и результат нужно выводить на каждый диапазон

Автор - Vyacheslav
Дата добавления - 06.04.2013 в 09:04
Hugo Дата: Суббота, 06.04.2013, 11:10 | Сообщение № 18
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3252
Репутация: 707 ±
Замечаний: 0% ±

2019
Я бы вместо макроса на событие применял массивную UDF. Алгоритм на словаре, как у ikki.
Правда в исходной задаче пришлось бы забивать её на весь лист (одну), и при худшем раскладе места на заголовки нет - т.е. если забить под заголовки, то при всех уникальных будет ошибка... Но ошибка будет и в этом макросе при таком раскладе.
Но если диапазоны поменьше, то вполне применимо. Сколько диапазонов - столько применяем UDF.
К сообщению приложен файл: mysuperuniq.rar (11.1 Kb)


excel@nxt.ru
webmoney: E265281470651 Z422237915069
 
Ответить
СообщениеЯ бы вместо макроса на событие применял массивную UDF. Алгоритм на словаре, как у ikki.
Правда в исходной задаче пришлось бы забивать её на весь лист (одну), и при худшем раскладе места на заголовки нет - т.е. если забить под заголовки, то при всех уникальных будет ошибка... Но ошибка будет и в этом макросе при таком раскладе.
Но если диапазоны поменьше, то вполне применимо. Сколько диапазонов - столько применяем UDF.

Автор - Hugo
Дата добавления - 06.04.2013 в 11:10
Vyacheslav Дата: Воскресенье, 07.04.2013, 20:29 | Сообщение № 19
Группа: Пользователи
Ранг: Новичок
Сообщений: 11
Репутация: 0 ±
Замечаний: 0% ±

Hugo, Мне нравится эта идея! сейчас буду пробовать
 
Ответить
СообщениеHugo, Мне нравится эта идея! сейчас буду пробовать

Автор - Vyacheslav
Дата добавления - 07.04.2013 в 20:29
Vyacheslav Дата: Воскресенье, 07.04.2013, 21:11 | Сообщение № 20
Группа: Пользователи
Ранг: Новичок
Сообщений: 11
Репутация: 0 ±
Замечаний: 0% ±

Хорошо конечно применять массивную UDF, но теряется права на редактирования результата =(

может кто поможет разобраться, как макрос сделать на много диапазонов, вот, ято я сделал, но не работает =(((( HELP!!!!


[admin]Оформляйте коды тегами![/admin]


Сообщение отредактировал Vyacheslav - Воскресенье, 07.04.2013, 21:17
 
Ответить
СообщениеХорошо конечно применять массивную UDF, но теряется права на редактирования результата =(

может кто поможет разобраться, как макрос сделать на много диапазонов, вот, ято я сделал, но не работает =(((( HELP!!!!


[admin]Оформляйте коды тегами![/admin]

Автор - Vyacheslav
Дата добавления - 07.04.2013 в 21:11
Мир MS Excel » Вопросы и решения » Вопросы по Excel » Поиск и подсчет количества уникальных значений в массиве (Поиск и подсчет количества уникальных значений в массиве)
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:

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