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

Вход

Регистрация

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

 

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

  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_, DrMini  
Выборка уникальных значений из таблицы по условиям
osuna Дата: Понедельник, 08.06.2015, 17:52 | Сообщение № 1
Группа: Пользователи
Ранг: Участник
Сообщений: 67
Репутация: 0 ±
Замечаний: 20% ±

Excel 2010
Добрый день подскажите пожалуйста формулу по выборке уникальных значений из столбца (диапазона) по условиям (условий может быть от 2-х до 4-х)
Заранее спасибо
К сообщению приложен файл: test1.xlsx (11.2 Kb)


С уважением, Владимир.

Сообщение отредактировал osuna - Понедельник, 08.06.2015, 18:15
 
Ответить
СообщениеДобрый день подскажите пожалуйста формулу по выборке уникальных значений из столбца (диапазона) по условиям (условий может быть от 2-х до 4-х)
Заранее спасибо

Автор - osuna
Дата добавления - 08.06.2015 в 17:52
jakim Дата: Понедельник, 08.06.2015, 18:46 | Сообщение № 2
Группа: Друзья
Ранг: Старожил
Сообщений: 1218
Репутация: 316 ±
Замечаний: 0% ±

Excel 2010
Вариант.
К сообщению приложен файл: 0881788.xlsx (11.8 Kb)
 
Ответить
СообщениеВариант.

Автор - jakim
Дата добавления - 08.06.2015 в 18:46
Pelena Дата: Понедельник, 08.06.2015, 19:45 | Сообщение № 3
Группа: Админы
Ранг: Местный житель
Сообщений: 19517
Репутация: 4632 ±
Замечаний: ±

Excel 365 & Mac Excel
Вариант с помощью расширенного фильтра.
Если операция не разовая, то можно записать макрорекодером
К сообщению приложен файл: test1.xls (32.5 Kb)


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
СообщениеВариант с помощью расширенного фильтра.
Если операция не разовая, то можно записать макрорекодером

Автор - Pelena
Дата добавления - 08.06.2015 в 19:45
osuna Дата: Понедельник, 08.06.2015, 20:20 | Сообщение № 4
Группа: Пользователи
Ранг: Участник
Сообщений: 67
Репутация: 0 ±
Замечаний: 20% ±

Excel 2010
Спасибо огромное.
Оба варианта рабочие правда первый на большой таблице очень долго думает(
Pelena, а если не трудно можно про "записать макрорекодером" чуть подробней, потому что операция действительно не разовая.


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

Автор - osuna
Дата добавления - 08.06.2015 в 20:20
Pelena Дата: Понедельник, 08.06.2015, 20:36 | Сообщение № 5
Группа: Админы
Ранг: Местный житель
Сообщений: 19517
Репутация: 4632 ±
Замечаний: ±

Excel 365 & Mac Excel
Я в файле так и сделала, немного подкорректировала и повесила макрос на кнопку.
Нажмите Alt+F11.

А записать макрос можно с вкладки Разработчик с помощью кнопки Запись макроса. Нажимаете кнопку, выполняете действия, ещё раз нажимаете кнопку. Дальше через Alt+F11 смотрите текст макроса


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
СообщениеЯ в файле так и сделала, немного подкорректировала и повесила макрос на кнопку.
Нажмите Alt+F11.

А записать макрос можно с вкладки Разработчик с помощью кнопки Запись макроса. Нажимаете кнопку, выполняете действия, ещё раз нажимаете кнопку. Дальше через Alt+F11 смотрите текст макроса

Автор - Pelena
Дата добавления - 08.06.2015 в 20:36
osuna Дата: Понедельник, 08.06.2015, 20:47 | Сообщение № 6
Группа: Пользователи
Ранг: Участник
Сообщений: 67
Репутация: 0 ±
Замечаний: 20% ±

Excel 2010
А имеет значение количество столбцов и количество условий, а то мне выдается ошибка "Указан недопустимый диапазон базы данных"
(очень большая таблица 290 тысяч строк и около 20 столбцов)


С уважением, Владимир.
 
Ответить
СообщениеА имеет значение количество столбцов и количество условий, а то мне выдается ошибка "Указан недопустимый диапазон базы данных"
(очень большая таблица 290 тысяч строк и около 20 столбцов)

Автор - osuna
Дата добавления - 08.06.2015 в 20:47
osuna Дата: Понедельник, 08.06.2015, 20:50 | Сообщение № 7
Группа: Пользователи
Ранг: Участник
Сообщений: 67
Репутация: 0 ±
Замечаний: 20% ±

Excel 2010
И к тому же таблица на другом листе (хотя наверное это не имеет значения)


С уважением, Владимир.
 
Ответить
СообщениеИ к тому же таблица на другом листе (хотя наверное это не имеет значения)

Автор - osuna
Дата добавления - 08.06.2015 в 20:50
_Boroda_ Дата: Понедельник, 08.06.2015, 20:53 | Сообщение № 8
Группа: Админы
Ранг: Местный житель
Сообщений: 16895
Репутация: 6613 ±
Замечаний: ±

2003; 2007; 2010; 2013 RUS
А по-моему проще сводной таблицей все это делать.
таблица на другом листе (хотя наверное это не имеет значения)

Еще как имеет. Расширенный фильтр не выводит значения на другой лист. Но можно обхитрить - с этого другого листа делать расширенный фильтр (то есть мы делаем РФ на том листе, где хотим получить данные).
К сообщению приложен файл: test1_1_1.xlsx (14.6 Kb)


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеА по-моему проще сводной таблицей все это делать.
таблица на другом листе (хотя наверное это не имеет значения)

Еще как имеет. Расширенный фильтр не выводит значения на другой лист. Но можно обхитрить - с этого другого листа делать расширенный фильтр (то есть мы делаем РФ на том листе, где хотим получить данные).

Автор - _Boroda_
Дата добавления - 08.06.2015 в 20:53
AndreTM Дата: Понедельник, 08.06.2015, 20:53 | Сообщение № 9
Группа: Друзья
Ранг: Старожил
Сообщений: 1762
Репутация: 501 ±
Замечаний: 0% ±

2003 & 2010
osuna, при таких больших объемах данных имеет смысл делать выборку запросом (встроенными средствами или на VBA с использованием ADO/DAO). Особенно если у вас это не разовая операция, а, например, её надо проделывать по 10 раз в день...


Skype: andre.tm.007
Donate: Qiwi: 9517375010
 
Ответить
Сообщениеosuna, при таких больших объемах данных имеет смысл делать выборку запросом (встроенными средствами или на VBA с использованием ADO/DAO). Особенно если у вас это не разовая операция, а, например, её надо проделывать по 10 раз в день...

Автор - AndreTM
Дата добавления - 08.06.2015 в 20:53
Serge_007 Дата: Понедельник, 08.06.2015, 20:54 | Сообщение № 10
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2749 ±
Замечаний: ±

Excel 2016
таблица 290 тысяч строк и около 20 столбцов
Тогда проще будет сводной таблицей
К сообщению приложен файл: osuna.xls (42.0 Kb)


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
Сообщение
таблица 290 тысяч строк и около 20 столбцов
Тогда проще будет сводной таблицей

Автор - Serge_007
Дата добавления - 08.06.2015 в 20:54
osuna Дата: Понедельник, 08.06.2015, 20:59 | Сообщение № 11
Группа: Пользователи
Ранг: Участник
Сообщений: 67
Репутация: 0 ±
Замечаний: 20% ±

Excel 2010
Вариант со сводной хорош. Но хотелось бы формулами либо запросом (с формулами явно в голове лучше, запросы это так сказать "слабое место")))
Данную операцию надо будет проводить даже не 10 раз а раз 100 может 200 в день

Если есть возможность помочь или наставить на путь истинный по поводу запроса заранее благодарю.

Хотя в любом случае благодарю за помощь и ответы)


С уважением, Владимир.
 
Ответить
СообщениеВариант со сводной хорош. Но хотелось бы формулами либо запросом (с формулами явно в голове лучше, запросы это так сказать "слабое место")))
Данную операцию надо будет проводить даже не 10 раз а раз 100 может 200 в день

Если есть возможность помочь или наставить на путь истинный по поводу запроса заранее благодарю.

Хотя в любом случае благодарю за помощь и ответы)

Автор - osuna
Дата добавления - 08.06.2015 в 20:59
_Boroda_ Дата: Понедельник, 08.06.2015, 21:16 | Сообщение № 12
Группа: Админы
Ранг: Местный житель
Сообщений: 16895
Репутация: 6613 ±
Замечаний: ±

2003; 2007; 2010; 2013 RUS
Запрос - это, по сути, та же сводная. Но значительно сложнее. А сводной - Вы заранее ставите диапазон на 999999 строк (посмотрите у меня в посте выше в файле-примере), заранее ставите все нужные поля в фильтр отчета и делайте сколько хотите раз - только в фильтрах выбирайте нужные значения и всё. Очень удобно и, что немаловажно, очень быстро.


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеЗапрос - это, по сути, та же сводная. Но значительно сложнее. А сводной - Вы заранее ставите диапазон на 999999 строк (посмотрите у меня в посте выше в файле-примере), заранее ставите все нужные поля в фильтр отчета и делайте сколько хотите раз - только в фильтрах выбирайте нужные значения и всё. Очень удобно и, что немаловажно, очень быстро.

Автор - _Boroda_
Дата добавления - 08.06.2015 в 21:16
AndreTM Дата: Понедельник, 08.06.2015, 22:18 | Сообщение № 13
Группа: Друзья
Ранг: Старожил
Сообщений: 1762
Репутация: 501 ±
Замечаний: 0% ±

2003 & 2010
и, что немаловажно, очень быстро.
И то-о-оормозит при каждом изменении на листе-источнике, да если ещё в источнике есть формулы, да ещё если не отключено обновление при открытии-закрытии... Или придется отключать-включать автоперерасчет сводной - а это, по сути, то же самое, что и тыкать в кнопочку "сделать запрос".
Конечно, можно объединить подход - формат вывода сделать сводной, отключить её обновление, а затем подвесить это обновление на нужные события - нажатие кнопки, таймер, добавление строк - это макросом...
Запрос - это, по сути, та же сводная
Ну, это источник данных для сводной - запрос. Причем именно такой, какой вы написали бы "в коде", т.е. его можно из той же сводной взять и использовать уже без неё. Так что не настолько и сложно организовать выборку просто запросом.
Но сама сводная ещё и предлагает дополнительный функционал, который в случае "голого" запроса пришлось бы писать отдельныим кодом. Так что все зависит от решаемой задачи в комплексе - иногда в "чистом коде" настроить параметрический запрос удобнее, нежели настраивать-перестраивать параметры сводной.


Skype: andre.tm.007
Donate: Qiwi: 9517375010
 
Ответить
Сообщение
и, что немаловажно, очень быстро.
И то-о-оормозит при каждом изменении на листе-источнике, да если ещё в источнике есть формулы, да ещё если не отключено обновление при открытии-закрытии... Или придется отключать-включать автоперерасчет сводной - а это, по сути, то же самое, что и тыкать в кнопочку "сделать запрос".
Конечно, можно объединить подход - формат вывода сделать сводной, отключить её обновление, а затем подвесить это обновление на нужные события - нажатие кнопки, таймер, добавление строк - это макросом...
Запрос - это, по сути, та же сводная
Ну, это источник данных для сводной - запрос. Причем именно такой, какой вы написали бы "в коде", т.е. его можно из той же сводной взять и использовать уже без неё. Так что не настолько и сложно организовать выборку просто запросом.
Но сама сводная ещё и предлагает дополнительный функционал, который в случае "голого" запроса пришлось бы писать отдельныим кодом. Так что все зависит от решаемой задачи в комплексе - иногда в "чистом коде" настроить параметрический запрос удобнее, нежели настраивать-перестраивать параметры сводной.

Автор - AndreTM
Дата добавления - 08.06.2015 в 22:18
_Boroda_ Дата: Понедельник, 08.06.2015, 23:11 | Сообщение № 14
Группа: Админы
Ранг: Местный житель
Сообщений: 16895
Репутация: 6613 ±
Замечаний: ±

2003; 2007; 2010; 2013 RUS
И то-о-оормозит при каждом изменении на листе-источнике

Это с каких это пор у нас сводные таблицы вдруг стали реагировать пересчетом на изменение в источнике?
иногда в "чистом коде" настроить параметрический запрос удобнее, нежели настраивать-перестраивать параметры сводной.
Конечно. Если умеешь. Однако в сводной все наглядно, мышой перетащил что нужно куда нужно - и наслаждайся, справится любой. А сколько будет Владимир писать это твое
подвесить это обновление на нужные события - нажатие кнопки, таймер, добавление строк - это макросом...
Тогда уж давай все в Акс засунем, или вообще сразу запросом с родной базы тянуть будем.
Да, твой подход безусловно лучше, но вот если с Олимпа спуститься, то вполне может оказаться, что не для всех - многим гораздо комфортнее пользоваться инструментом, пусть и не таким совершенным, но зато знакомым. Сколько раз уже здесь звучало от далеко неглупых людей что-то типа: "Формулу я еще поправить может быть и смогу, а вот чтобы с макросом разобраться, мне придется очень много времени потратить. Да и то не факт, что получится.".
Правда, существует еще категория (и я сам к ней отношусь) "Лучше день потерять, зато потом за 5 минут долететь". Вот для них да, это было бы интересно. А когда не просто слова, но и пример еще есть, то в особенности.


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
Сообщение
И то-о-оормозит при каждом изменении на листе-источнике

Это с каких это пор у нас сводные таблицы вдруг стали реагировать пересчетом на изменение в источнике?
иногда в "чистом коде" настроить параметрический запрос удобнее, нежели настраивать-перестраивать параметры сводной.
Конечно. Если умеешь. Однако в сводной все наглядно, мышой перетащил что нужно куда нужно - и наслаждайся, справится любой. А сколько будет Владимир писать это твое
подвесить это обновление на нужные события - нажатие кнопки, таймер, добавление строк - это макросом...
Тогда уж давай все в Акс засунем, или вообще сразу запросом с родной базы тянуть будем.
Да, твой подход безусловно лучше, но вот если с Олимпа спуститься, то вполне может оказаться, что не для всех - многим гораздо комфортнее пользоваться инструментом, пусть и не таким совершенным, но зато знакомым. Сколько раз уже здесь звучало от далеко неглупых людей что-то типа: "Формулу я еще поправить может быть и смогу, а вот чтобы с макросом разобраться, мне придется очень много времени потратить. Да и то не факт, что получится.".
Правда, существует еще категория (и я сам к ней отношусь) "Лучше день потерять, зато потом за 5 минут долететь". Вот для них да, это было бы интересно. А когда не просто слова, но и пример еще есть, то в особенности.

Автор - _Boroda_
Дата добавления - 08.06.2015 в 23:11
PowerBoy Дата: Вторник, 09.06.2015, 11:57 | Сообщение № 15
Группа: Проверенные
Ранг: Участник
Сообщений: 100
Репутация: 31 ±
Замечаний: 0% ±

2003
[vba]
Код

Public Sub RefreshData()
'Created using add-in ActiveTables
Dim strConnection As String
Dim strSQL As String
strConnection = IIf(Val(Application.Version) < 12, "OLEDB;Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & ThisWorkbook.FullName & ";Extended Properties='Excel 8.0;HDR=NO;IMEX=3';", "OLEDB;Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ThisWorkbook.FullName & ";Extended Properties='Excel 12.0;HDR=NO;IMEX=3';")
strSQL = "SELECT DISTINCT  1 AS ТИП,   F1 AS ИМЯ,  count(*) AS КОЛВО FROM   [Расчет долей$a2:d16]  GROUP BY   F1  union all  SELECT DISTINCT  2,   F1,  count(*)  FROM   [Расчет долей$a2:d16]  WHERE F2='ФО1'  GROUP BY   F1  union all  SELECT DISTINCT  3,   F1,  count(*)  FROM   [Расчет долей$a2:d16]  WHERE F2='ФО1' AND F3='группа 1' AND F4='тип1'  GROUP BY   F1"
With ThisWorkbook.Sheets.Add
     With .QueryTables.Add(strConnection, .Range("A1"), strSQL)
          .Refresh False
          .Delete
     End With
End With
End Sub

[/vba]


Excel + SQL = ActiveTables (http://vk.com/ExcelSQL)
 
Ответить
Сообщение[vba]
Код

Public Sub RefreshData()
'Created using add-in ActiveTables
Dim strConnection As String
Dim strSQL As String
strConnection = IIf(Val(Application.Version) < 12, "OLEDB;Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & ThisWorkbook.FullName & ";Extended Properties='Excel 8.0;HDR=NO;IMEX=3';", "OLEDB;Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ThisWorkbook.FullName & ";Extended Properties='Excel 12.0;HDR=NO;IMEX=3';")
strSQL = "SELECT DISTINCT  1 AS ТИП,   F1 AS ИМЯ,  count(*) AS КОЛВО FROM   [Расчет долей$a2:d16]  GROUP BY   F1  union all  SELECT DISTINCT  2,   F1,  count(*)  FROM   [Расчет долей$a2:d16]  WHERE F2='ФО1'  GROUP BY   F1  union all  SELECT DISTINCT  3,   F1,  count(*)  FROM   [Расчет долей$a2:d16]  WHERE F2='ФО1' AND F3='группа 1' AND F4='тип1'  GROUP BY   F1"
With ThisWorkbook.Sheets.Add
     With .QueryTables.Add(strConnection, .Range("A1"), strSQL)
          .Refresh False
          .Delete
     End With
End With
End Sub

[/vba]

Автор - PowerBoy
Дата добавления - 09.06.2015 в 11:57
  • Страница 1 из 1
  • 1
Поиск:

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