Создание выборки максимальных сумм из массива по условиям
zzbear
Дата: Вторник, 07.02.2017, 12:34 |
Сообщение № 1
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 101
Репутация:
0
±
Замечаний:
0% ±
Excel 2007
Существует массив данных. (лист Исходные) Из данного массива необходимо отобрать максимальные суммы значений "Колличество" по нескольким условиям "Клиент" и "Территория" (лист Форма отбора). Кроме того к каждому максимальному значению из образованного списка необходимо подтянуть значение кому принадлежит данная сумма "Клиент".
Существует массив данных. (лист Исходные) Из данного массива необходимо отобрать максимальные суммы значений "Колличество" по нескольким условиям "Клиент" и "Территория" (лист Форма отбора). Кроме того к каждому максимальному значению из образованного списка необходимо подтянуть значение кому принадлежит данная сумма "Клиент". zzbear
К сообщению приложен файл:
____.xlsx
(15.0 Kb)
Ответить
Сообщение Существует массив данных. (лист Исходные) Из данного массива необходимо отобрать максимальные суммы значений "Колличество" по нескольким условиям "Клиент" и "Территория" (лист Форма отбора). Кроме того к каждому максимальному значению из образованного списка необходимо подтянуть значение кому принадлежит данная сумма "Клиент". Автор - zzbear Дата добавления - 07.02.2017 в 12:34
китин
Дата: Вторник, 07.02.2017, 12:49 |
Сообщение № 2
Группа: Модераторы
Ранг: Экселист
Сообщений: 7034
Репутация:
1079
±
Замечаний:
0% ±
Excel 2007;2010;2016
формула массива Код
=НАИБОЛЬШИЙ(ЕСЛИ(Исходные!$B$2:$B$32=$G$2;Исходные!$D$2:$D$32);СТРОКА(A1))
формула массива Код
=НАИБОЛЬШИЙ(ЕСЛИ(Исходные!$B$2:$B$32=$G$2;Исходные!$D$2:$D$32);СТРОКА(A1))
китин
Не судите очень строго:я пытаюсь научиться ЯД 41001877306852
Сообщение отредактировал китин - Вторник, 07.02.2017, 12:50
Ответить
Сообщение формула массива Код
=НАИБОЛЬШИЙ(ЕСЛИ(Исходные!$B$2:$B$32=$G$2;Исходные!$D$2:$D$32);СТРОКА(A1))
Автор - китин Дата добавления - 07.02.2017 в 12:49
zzbear
Дата: Вторник, 07.02.2017, 13:14 |
Сообщение № 3
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 101
Репутация:
0
±
Замечаний:
0% ±
Excel 2007
китин, Нет это не то. Необходим список сумм "Колличеств" по каждому клиенту в порядке убывания. В моем примере формула работает, но некорректно из-за условия "Список_уникальных_клиентов"Код
=НАИБОЛЬШИЙ(СУММЕСЛИМН(Колличество;Территория;'Форма отбора'!$G$2;Клиент;Список_уникальных_клиентов);$B2)
китин, Нет это не то. Необходим список сумм "Колличеств" по каждому клиенту в порядке убывания. В моем примере формула работает, но некорректно из-за условия "Список_уникальных_клиентов"Код
=НАИБОЛЬШИЙ(СУММЕСЛИМН(Колличество;Территория;'Форма отбора'!$G$2;Клиент;Список_уникальных_клиентов);$B2)
zzbear
Сообщение отредактировал zzbear - Вторник, 07.02.2017, 13:15
Ответить
Сообщение китин, Нет это не то. Необходим список сумм "Колличеств" по каждому клиенту в порядке убывания. В моем примере формула работает, но некорректно из-за условия "Список_уникальных_клиентов"Код
=НАИБОЛЬШИЙ(СУММЕСЛИМН(Колличество;Территория;'Форма отбора'!$G$2;Клиент;Список_уникальных_клиентов);$B2)
Автор - zzbear Дата добавления - 07.02.2017 в 13:14
Perfect2You
Дата: Вторник, 07.02.2017, 13:18 |
Сообщение № 4
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 237
Репутация:
59
±
Замечаний:
0% ±
Excel 2010
zzbear, ПопробуйтеКод
=НАИБОЛЬШИЙ(ИНДЕКС(($H$2=Территория)*ЕСЛИ(ЕТЕКСТ(Колличество);0;Колличество);0;1);$B2)
Тоже формула массива. С клиентом есть вопрос: возможны ли совпадения значений количеств для разных клиентов на одной территории? Если нет, Ваша формула подходит. Если да, усложнять надо.
zzbear, ПопробуйтеКод
=НАИБОЛЬШИЙ(ИНДЕКС(($H$2=Территория)*ЕСЛИ(ЕТЕКСТ(Колличество);0;Колличество);0;1);$B2)
Тоже формула массива. С клиентом есть вопрос: возможны ли совпадения значений количеств для разных клиентов на одной территории? Если нет, Ваша формула подходит. Если да, усложнять надо. Perfect2You
Сообщение отредактировал Perfect2You - Вторник, 07.02.2017, 13:24
Ответить
Сообщение zzbear, ПопробуйтеКод
=НАИБОЛЬШИЙ(ИНДЕКС(($H$2=Территория)*ЕСЛИ(ЕТЕКСТ(Колличество);0;Колличество);0;1);$B2)
Тоже формула массива. С клиентом есть вопрос: возможны ли совпадения значений количеств для разных клиентов на одной территории? Если нет, Ваша формула подходит. Если да, усложнять надо. Автор - Perfect2You Дата добавления - 07.02.2017 в 13:18
sboy
Дата: Вторник, 07.02.2017, 13:31 |
Сообщение № 5
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2566
Репутация:
724
±
Замечаний:
0% ±
Excel 2010
Добрый день. вариант не массивнойКод
=НАИБОЛЬШИЙ(ИНДЕКС((Исходные!$B$2:$B$32=$G$2)*Исходные!$D$2:$D$32;0);B2)
Добрый день. вариант не массивнойКод
=НАИБОЛЬШИЙ(ИНДЕКС((Исходные!$B$2:$B$32=$G$2)*Исходные!$D$2:$D$32;0);B2)
sboy
Яндекс: 410016850021169
Ответить
Сообщение Добрый день. вариант не массивнойКод
=НАИБОЛЬШИЙ(ИНДЕКС((Исходные!$B$2:$B$32=$G$2)*Исходные!$D$2:$D$32;0);B2)
Автор - sboy Дата добавления - 07.02.2017 в 13:31
zzbear
Дата: Вторник, 07.02.2017, 13:38 |
Сообщение № 6
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 101
Репутация:
0
±
Замечаний:
0% ±
Excel 2007
Perfect2You, sboy, Спасибо, сейчас буду пробовать
Perfect2You, sboy, Спасибо, сейчас буду пробовать zzbear
Ответить
Сообщение Perfect2You, sboy, Спасибо, сейчас буду пробовать Автор - zzbear Дата добавления - 07.02.2017 в 13:38
zzbear
Дата: Вторник, 07.02.2017, 13:51 |
Сообщение № 7
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 101
Репутация:
0
±
Замечаний:
0% ±
Excel 2007
Perfect2You, Ваша не работает. Совпадающие варианты значений количеств возможны. То есть Клиент 1 купил за месяц 3+4+5= 12 ед товара Клиент 2 купил за месяц 4+6+1+2= 13 ед товара. И.т.д В результате мы должны получить список 1. Клиент 2 = 13 ед. 2. Клиент 1 = 12 ед. И.т.д
Perfect2You, Ваша не работает. Совпадающие варианты значений количеств возможны. То есть Клиент 1 купил за месяц 3+4+5= 12 ед товара Клиент 2 купил за месяц 4+6+1+2= 13 ед товара. И.т.д В результате мы должны получить список 1. Клиент 2 = 13 ед. 2. Клиент 1 = 12 ед. И.т.д zzbear
Ответить
Сообщение Perfect2You, Ваша не работает. Совпадающие варианты значений количеств возможны. То есть Клиент 1 купил за месяц 3+4+5= 12 ед товара Клиент 2 купил за месяц 4+6+1+2= 13 ед товара. И.т.д В результате мы должны получить список 1. Клиент 2 = 13 ед. 2. Клиент 1 = 12 ед. И.т.д Автор - zzbear Дата добавления - 07.02.2017 в 13:51
sboy
Дата: Вторник, 07.02.2017, 13:59 |
Сообщение № 8
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2566
Репутация:
724
±
Замечаний:
0% ±
Excel 2010
Тогда самый простой вариант сводной
Тогда самый простой вариант сводной sboy
Яндекс: 410016850021169
Ответить
Сообщение Тогда самый простой вариант сводной Автор - sboy Дата добавления - 07.02.2017 в 13:59
_Boroda_
Дата: Вторник, 07.02.2017, 13:59 |
Сообщение № 9
Группа: Админы
Ранг: Местный житель
Сообщений: 16886
Репутация:
6599
±
Замечаний:
±
2003; 2007; 2010; 2013 RUS
Переделал Ваши диапазоны со всего столбца на динамически изменяемые типаКод
=Исходные!$C$2:ИНДЕКС(Исходные!$C:$C;СЧЁТЗ(Исходные!$B:$B))
Тогда формула массива для клиентов (одинаковые итоговые суммы распознает)Код
=ИНДЕКС(Кл;ПОИСКПОЗ(НАИБОЛЬШИЙ(СУММЕСЛИМН(Кол;Тер;G$2;Кл;Кл)+ПОИСКПОЗ(Кл;Кл;)%%;1+СУММПРОИЗВ(СЧЁТЕСЛИМН(Тер;G$2;Кл;C$1:C1)));СУММЕСЛИМН(Кол;Тер;G$2;Кл;Кл)+ПОИСКПОЗ(Кл;Кл;)%%;))
И обычная формула для общего количестваКод
=СУММЕСЛИМН(Кол;Тер;G$2;Кл;C2)
А вообще все проще сводной таблицей можно сделать. Сортировка и фильтр 10 наибольших. Сделал ее на первом листе Я ведь правильно понял, что Вам нужно ранжирование по суммарному количеству по клиенту на указанной территории?
Переделал Ваши диапазоны со всего столбца на динамически изменяемые типаКод
=Исходные!$C$2:ИНДЕКС(Исходные!$C:$C;СЧЁТЗ(Исходные!$B:$B))
Тогда формула массива для клиентов (одинаковые итоговые суммы распознает)Код
=ИНДЕКС(Кл;ПОИСКПОЗ(НАИБОЛЬШИЙ(СУММЕСЛИМН(Кол;Тер;G$2;Кл;Кл)+ПОИСКПОЗ(Кл;Кл;)%%;1+СУММПРОИЗВ(СЧЁТЕСЛИМН(Тер;G$2;Кл;C$1:C1)));СУММЕСЛИМН(Кол;Тер;G$2;Кл;Кл)+ПОИСКПОЗ(Кл;Кл;)%%;))
И обычная формула для общего количестваКод
=СУММЕСЛИМН(Кол;Тер;G$2;Кл;C2)
А вообще все проще сводной таблицей можно сделать. Сортировка и фильтр 10 наибольших. Сделал ее на первом листе Я ведь правильно понял, что Вам нужно ранжирование по суммарному количеству по клиенту на указанной территории? _Boroda_
К сообщению приложен файл:
-2-1.xlsx
(19.4 Kb)
Скажи мне, кудесник, любимец ба’гов... Платная помощь: Boroda_Excel@mail.ru Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
Ответить
Сообщение Переделал Ваши диапазоны со всего столбца на динамически изменяемые типаКод
=Исходные!$C$2:ИНДЕКС(Исходные!$C:$C;СЧЁТЗ(Исходные!$B:$B))
Тогда формула массива для клиентов (одинаковые итоговые суммы распознает)Код
=ИНДЕКС(Кл;ПОИСКПОЗ(НАИБОЛЬШИЙ(СУММЕСЛИМН(Кол;Тер;G$2;Кл;Кл)+ПОИСКПОЗ(Кл;Кл;)%%;1+СУММПРОИЗВ(СЧЁТЕСЛИМН(Тер;G$2;Кл;C$1:C1)));СУММЕСЛИМН(Кол;Тер;G$2;Кл;Кл)+ПОИСКПОЗ(Кл;Кл;)%%;))
И обычная формула для общего количестваКод
=СУММЕСЛИМН(Кол;Тер;G$2;Кл;C2)
А вообще все проще сводной таблицей можно сделать. Сортировка и фильтр 10 наибольших. Сделал ее на первом листе Я ведь правильно понял, что Вам нужно ранжирование по суммарному количеству по клиенту на указанной территории? Автор - _Boroda_ Дата добавления - 07.02.2017 в 13:59
Perfect2You
Дата: Вторник, 07.02.2017, 14:08 |
Сообщение № 10
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 237
Репутация:
59
±
Замечаний:
0% ±
Excel 2010
zzbear, Странно, прикладываю файл - вроде работает. Удалось победить и построить формулу (даже не массива) для клиентов. Она не боится повторений количеств. Единственное, в случае повторений, клиенты перечисляются "снизу вверх". Если это не должно быть так, незначительным усложнением можно сделать наоборот. А с динамически изменяемыми диапазонами формула для количеств перестает быть массивной:Код
=НАИБОЛЬШИЙ(ИНДЕКС(($H$2=Территория)*Колличество;0;1);$B2)
zzbear, Странно, прикладываю файл - вроде работает. Удалось победить и построить формулу (даже не массива) для клиентов. Она не боится повторений количеств. Единственное, в случае повторений, клиенты перечисляются "снизу вверх". Если это не должно быть так, незначительным усложнением можно сделать наоборот. А с динамически изменяемыми диапазонами формула для количеств перестает быть массивной:Код
=НАИБОЛЬШИЙ(ИНДЕКС(($H$2=Территория)*Колличество;0;1);$B2)
Perfect2You
Сообщение отредактировал Perfect2You - Вторник, 07.02.2017, 14:13
Ответить
Сообщение zzbear, Странно, прикладываю файл - вроде работает. Удалось победить и построить формулу (даже не массива) для клиентов. Она не боится повторений количеств. Единственное, в случае повторений, клиенты перечисляются "снизу вверх". Если это не должно быть так, незначительным усложнением можно сделать наоборот. А с динамически изменяемыми диапазонами формула для количеств перестает быть массивной:Код
=НАИБОЛЬШИЙ(ИНДЕКС(($H$2=Территория)*Колличество;0;1);$B2)
Автор - Perfect2You Дата добавления - 07.02.2017 в 14:08
zzbear
Дата: Вторник, 07.02.2017, 14:18 |
Сообщение № 11
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 101
Репутация:
0
±
Замечаний:
0% ±
Excel 2007
_Boroda_, sboy, Спасибо. вариант со сводной не подходит, т.к. необходимо в последующем проводить дополнительные вычисления (сопоставление с планами, прогнозами
_Boroda_, sboy, Спасибо. вариант со сводной не подходит, т.к. необходимо в последующем проводить дополнительные вычисления (сопоставление с планами, прогнозами zzbear
Ответить
Сообщение _Boroda_, sboy, Спасибо. вариант со сводной не подходит, т.к. необходимо в последующем проводить дополнительные вычисления (сопоставление с планами, прогнозами Автор - zzbear Дата добавления - 07.02.2017 в 14:18
zzbear
Дата: Вторник, 07.02.2017, 14:55 |
Сообщение № 12
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 101
Репутация:
0
±
Замечаний:
0% ±
Excel 2007
_Boroda_ , Спасибо большое, кажется то что надо. Буду разбирать.
_Boroda_ , Спасибо большое, кажется то что надо. Буду разбирать.zzbear
Ответить
Сообщение _Boroda_ , Спасибо большое, кажется то что надо. Буду разбирать.Автор - zzbear Дата добавления - 07.02.2017 в 14:55
zzbear
Дата: Вторник, 07.02.2017, 15:01 |
Сообщение № 13
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 101
Репутация:
0
±
Замечаний:
0% ±
Excel 2007
_Boroda_, Нескромный вопрос как работает конструкция
_Boroda_, Нескромный вопрос как работает конструкция zzbear
Ответить
Сообщение _Boroda_, Нескромный вопрос как работает конструкция Автор - zzbear Дата добавления - 07.02.2017 в 15:01
_Boroda_
Дата: Вторник, 07.02.2017, 15:53 |
Сообщение № 14
Группа: Админы
Ранг: Местный житель
Сообщений: 16886
Репутация:
6599
±
Замечаний:
±
2003; 2007; 2010; 2013 RUS
ПОИСКПОЗ массива по самому себе даст номера строк первых вхождений каждого элемента массива. Если массив 1-3-3-2-1, то ПОИСКПОЗ(масс;масс;) даст 1-2-2-4-1 %% у конце - умножаем на 1% и на 1% - аналогично делению на 10000. Нам нужно очень маленькое число добавлять, но свое для каждого клиента
ПОИСКПОЗ массива по самому себе даст номера строк первых вхождений каждого элемента массива. Если массив 1-3-3-2-1, то ПОИСКПОЗ(масс;масс;) даст 1-2-2-4-1 %% у конце - умножаем на 1% и на 1% - аналогично делению на 10000. Нам нужно очень маленькое число добавлять, но свое для каждого клиента _Boroda_
Скажи мне, кудесник, любимец ба’гов... Платная помощь: Boroda_Excel@mail.ru Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
Ответить
Сообщение ПОИСКПОЗ массива по самому себе даст номера строк первых вхождений каждого элемента массива. Если массив 1-3-3-2-1, то ПОИСКПОЗ(масс;масс;) даст 1-2-2-4-1 %% у конце - умножаем на 1% и на 1% - аналогично делению на 10000. Нам нужно очень маленькое число добавлять, но свое для каждого клиента Автор - _Boroda_ Дата добавления - 07.02.2017 в 15:53
zzbear
Дата: Вторник, 07.02.2017, 21:44 |
Сообщение № 15
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 101
Репутация:
0
±
Замечаний:
0% ±
Excel 2007
_Boroda_, Спасибо еще раз.
_Boroda_, Спасибо еще раз. zzbear
Ответить
Сообщение _Boroda_, Спасибо еще раз. Автор - zzbear Дата добавления - 07.02.2017 в 21:44