Профессиональные приемы работы в Microsoft Excel

Обмен опытом => Microsoft Excel => Тема начата: Виталий Поликарпов от 23.05.2017, 20:25

Название: Наибольшее значение, условие
Отправлено: Виталий Поликарпов от 23.05.2017, 20:25
Подскажите, как вывести значение, если числа равны?

Т8=ИНДЕКС(B4:Q59;ПОИСКПОЗ(T10;Q4:Q59;0);1)
U8=ИНДЕКС(B4:Q59;ПОИСКПОЗ(U10;Q4:Q59;0);1)
V8=ИНДЕКС(B4:Q59;ПОИСКПОЗ(V10;Q4:Q59;0);1)
----------------------------------------------------------
T10=НАИБОЛЬШИЙ($Q$4:Q$59;СТРОКА(B1))
U10=НАИБОЛЬШИЙ($Q$4:Q$59;СТРОКА(B2))
V10=НАИБОЛЬШИЙ($Q$4:Q$59;СТРОКА(B3))
---------------------------------------------------------
Как видно на картинке, ячейки Q7 и Q8 равны. Как при одинаковых числах вывести мне значение ячейки B8?
Название: Re: Наибольшее значение, условие
Отправлено: iron priest от 23.05.2017, 20:37
почему именно q8? чем она особенная?
Название: Re: Наибольшее значение, условие
Отправлено: Виталий Поликарпов от 23.05.2017, 20:43
Цитата: iron priest от 23.05.2017, 20:37
почему именно q8? чем она особенная?
Эта таблица лидеров турнира по теннису.
в ячейках Q7 и Q8 - сейчас одинаковое кол-во очков, 28.
Т.е получается что у обоих игроков сейчас равное кол-во очков.
А мне надо вывести имя второго игрока в таблицу на второе место, а у меня дублируется имя первого игрока, потому что берется первое наибольшее значение.
Название: Re: Наибольшее значение, условие
Отправлено: vikttur от 23.05.2017, 21:07
ЦитироватьКак видно на картинке...
Видно, но формулу в картинке писать не получится.
Название: Re: Наибольшее значение, условие
Отправлено: iron priest от 23.05.2017, 21:32
Цитата: Виталий Поликарпов от 23.05.2017, 20:43вывести имя второго игрока в таблицу на второе место, а у меня дублируется имя первого игрока, потому что берется первое наибольшее значение.
если будет 3 или 5 таких позиций, то какую строку выводить?
Название: Re: Наибольшее значение, условие
Отправлено: Виталий Поликарпов от 23.05.2017, 21:35
Не жмите бездумно на кнопку цитирования [МОДЕРАТОР]

Цитироватьесли будет 3 или 5 таких позиций, то какую строку выводить?
По порядку первые три начиная с верхней.

Вот полная таблица.
Название: Re: Наибольшее значение, условие
Отправлено: zs5 от 24.05.2017, 07:53
1 место
=НАИБОЛЬШИЙ(Q7:Q10;1)
2 место
=ЕСЛИ(СЧЁТЕСЛИ(Q7:Q10;НАИБОЛЬШИЙ(Q7:Q10;1))>1;НАИБОЛЬШИЙ(СМЕЩ(Q7;ПОИСКПОЗ(НАИБОЛЬШИЙ(Q7:Q10;1);Q7:Q10;0);):Q10;1))
3 место
=ЕСЛИ(СЧЁТЕСЛИ(Q7:Q10;НАИБОЛЬШИЙ(Q7:Q10;1))>2;НАИБОЛЬШИЙ(СМЕЩ(Q7;ПОИСКПОЗ(НАИБОЛЬШИЙ(Q7:Q10;1);Q7:Q10;0)+ПОИСКПОЗ(НАИБОЛЬШИЙ(Q7:Q10;1);СМЕЩ(Q7;ПОИСКПОЗ(НАИБОЛЬШИЙ(Q7:Q10;1);Q7:Q10;0);):Q10;0);):Q10;1))
Название: Re: Наибольшее значение, условие
Отправлено: Виталий Поликарпов от 24.05.2017, 10:14
Не нужно цитировать без необходимости и копировать целыми сообщениями [МОДЕРАТОР]

Ваша формула ищет число, а мне нужно вывести текст из колонки B. напротив этого числа.
И кстати в формуле 3место - выдает ЛОЖЬ.
Название: Re: Наибольшее значение, условие
Отправлено: zs5 от 24.05.2017, 10:57
Цитата: Виталий Поликарпов от 24.05.2017, 10:14
И кстати в формуле 3место - выдает ЛОЖЬ.
Значит только 2 одинаковых значения.
1 место
=ИНДЕКС(B7:B10;ПОИСКПОЗ(НАИБОЛЬШИЙ(Q7:Q10;1);Q7:Q10;0);1)
2 место
=ИНДЕКС(СМЕЩ(Q7;ПОИСКПОЗ(НАИБОЛЬШИЙ(Q7:Q10;1);Q7:Q10;0)-1;0):B10;ПОИСКПОЗ(НАИБОЛЬШИЙ(Q7:Q10;1);Q7:Q10;0);1)
3 место
=ИНДЕКС(СМЕЩ(Q7;ПОИСКПОЗ(НАИБОЛЬШИЙ(Q7:Q10;1);Q7:Q10;0)+ПОИСКПОЗ(НАИБОЛЬШИЙ(Q7:Q10;1);СМЕЩ(Q7;ПОИСКПОЗ(НАИБОЛЬШИЙ(Q7:Q10;1);Q7:Q10;0);):Q10;0)-1;0):B10;ПОИСКПОЗ(НАИБОЛЬШИЙ(Q7:Q10;1);Q7:Q10;0);1)
когда 3 одинаковых значения
Название: Re: Наибольшее значение, условие
Отправлено: vikttur от 24.05.2017, 10:59
Виталий Поликарпов, Вы на замечания будете обращать внимание?

Ряд наибольших:
=НАИБОЛЬШИЙ($Q$4:Q$59;СТОЛБЕЦ(A1))
Фамилии (формула массива, вводится тремя клавишами):
=ИНДЕКС($B$4:$B$59;НАИБОЛЬШИЙ(ЕСЛИ($Q$4:$Q$59=28;СТРОКА($Q$4:$Q$59)-3);СЧЁТЕСЛИ($T$10:T10;T10)))
Перед вводом второй формулы нужно разъединить ячейки. ФМ в объединенные не вводится.

Цитироватьв формуле 3место - выдает ЛОЖЬ.
ЦитироватьЗначит только 2 одинаковых значения.
Вы неправильно поняли. Показывать нужно три лучших результата, не обязательно одинаковые
Название: Re: Наибольшее значение, условие
Отправлено: Виталий Поликарпов от 24.05.2017, 11:31
Цитата: vikttur от 24.05.2017, 10:59
Виталий Поликарпов, Вы на замечания будете обращать внимание?
I'm sorry.
-----------------
Три лучших результата, я вывожу с помощью:
=НАИБОЛЬШИЙ($Q$4:Q$59;СТРОКА(B1))
=НАИБОЛЬШИЙ($Q$4:Q$59;СТРОКА(B2))
=НАИБОЛЬШИЙ($Q$4:Q$59;СТРОКА(B3))
Ваша формула =ИНДЕКС($B$4:$B$59;НАИБОЛЬШИЙ(ЕСЛИ($Q$4:$Q$59=28;СТРОКА($Q$4:$Q$59)-3);СЧЁТЕСЛИ($T$10:T10;T10)))
Выводит ИСТИНА, и еще момент ЕСЛИ($Q$4:$Q$59=28... - там не всегда будет значение 28. оно меняется...
Может я не так обьясняю??? Если открыть таблицу. то на 2 месте, сейчас должно быть имя "Кирилл Эл-ль"
Название: Re: Наибольшее значение, условие
Отправлено: zs5 от 24.05.2017, 11:43
Цитировать
Вы неправильно поняли. Показывать нужно три лучших результата, не обязательно одинаковые
Предлагались условия:
=ЕСЛИ(СЧЁТЕСЛИ(Q7:Q10;НАИБОЛЬШИЙ(Q7:Q10;1))>1
=ЕСЛИ(СЧЁТЕСЛИ(Q7:Q10;НАИБОЛЬШИЙ(Q7:Q10;1))>2
Название: Re: Наибольшее значение, условие
Отправлено: Виталий Поликарпов от 24.05.2017, 12:03
2 zs5
См. полную таблицу. Твои решения не работают.
Название: Re: Наибольшее значение, условие
Отправлено: vikttur от 24.05.2017, 12:36
ЦитироватьВаша формула... Выводит ИСТИНА
Читайте внимательно:
Цитироватьформула массива, вводится тремя клавишами
Ctrl+Shift+Enter

ЦитироватьТри лучших результата, я вывожу с помощью...
А я Вам показал, как сделать протягиваемую формулу. В Вашем же варианте вместо СТРОКА() достаточно написать номер (1, 2 или 3)
Название: Re: Наибольшее значение, условие
Отправлено: zs5 от 24.05.2017, 13:01
Цитата: Виталий Поликарпов от 24.05.2017, 12:03
решения не работают.
[/quote
формула работает
Название: Re: Наибольшее значение, условие
Отправлено: Виталий Поликарпов от 24.05.2017, 23:04
Ну где же работает, когда нет. Ну может вы имеете ввиду при текущих значениях??? тогда. да, Но если игроки получили еще по 5 очков, то формула не работает. у меня выводит #ЧИСЛО!
Либо я что-то не так делаю.., делал все по инструкции, разьеденил ячейки и в ставил как массив.
Название: Re: Наибольшее значение, условие
Отправлено: vikttur от 24.05.2017, 23:14
Где же не работает? Работает. Давайте еще сообщений по 5 напишем... Покажите, ведь так легче понять, в чем ошибка, и не нужно гадать.
Название: Re: Наибольшее значение, условие
Отправлено: Виталий Поликарпов от 25.05.2017, 00:10
Вот так сейчас у меня.
Название: Re: Наибольшее значение, условие
Отправлено: vikttur от 25.05.2017, 09:41
Вот, теперь ошибка видна. Появилась при копировании/вставке в сообщение, в моем файле рабочая.
Вместо константы (28) нужно указать ссылку на ячейку ниже, на T10.
Название: Re: Наибольшее значение, условие
Отправлено: zs5 от 25.05.2017, 10:24
=ЕСЛИ(СЧЁТЕСЛИ(Q4:Q59;НАИБОЛЬШИЙ(Q4:Q59;1))>1;СМЕЩ(B4;ПОИСКПОЗ(НАИБОЛЬШИЙ(Q4:Q59;1);Q4:Q59;0);0);ИНДЕКС(B4:B59;ПОИСКПОЗ(НАИБОЛЬШИЙ(Q4:Q59;2);Q4:Q59;0);1))
Название: Re: Наибольшее значение, условие
Отправлено: Виталий Поликарпов от 25.05.2017, 11:09
Цитата: vikttur от 25.05.2017, 09:41
Вот, теперь ошибка видна. Появилась при копировании/вставке в сообщение, в моем файле рабочая.
Вместо константы (28) нужно указать ссылку на ячейку ниже, на T10.
Спасибо огромное!!! Все работает!!
Название: Re: Наибольшее значение, условие
Отправлено: IKor от 25.05.2017, 18:36
Если еще актуально:

Обычно для того, чтобы отсортировать формулами таблицу такого вида, я предпочитаю добавлять к целевой переменной (обычно числовой) уникальный индекс (обычно на базе номера строки)
=> ЦелеваяПеременная + СТРОКА()/1000
=> ЦелеваяПеременная + (1000-СТРОКА())/1000
здесь 1000 - это число гарантированно большее числа сортируемых строк.

Во избежание путаницы вспомогательный уникальный индекс можно скрывать при помощи форматирования ячеек.
Название: Re: Наибольшее значение, условие
Отправлено: zs5 от 26.05.2017, 08:01
Цитата: IKor от 25.05.2017, 18:36
Обычно для того, чтобы отсортировать формулами таблицу такого вида, я предпочитаю добавлять к целевой переменной
актуально: что считать "ЦелеваяПеременная" в актуальной задаче
Название: Re: Наибольшее значение, условие
Отправлено: IKor от 30.05.2017, 16:46
Цитата: zs5 от 26.05.2017, 08:01
актуально: что считать "ЦелеваяПеременная" в актуальной задаче
Если добавить "уникальный индекс на базе номера строки" к данным из столбца Q (см. первое сообщение в теме), то значения ячеек Q7 и Q8 станут отличаться друг от друга, что позволит не только функциям НАИБОЛЬШИЙ(;k)/НАИМЕНЬШИЙ(;k) выбирать оба результата, но и с помощью функции ПОИСКПОЗ(;;0) точно определять номера соответствующих строк.

Из личного опыта могу сказать, что для поиска номера строки вместо ПОИСКПОЗ() можно использовать комбинацию функций вида:
номер_строки = ОТБР(1000*(НАИБОЛЬШИЙ(;k)-ОТБР(НАИБОЛЬШИЙ(;k);0));0)
однако, зачастую результат вычисления оказывается некорректно округленным.

Поэтому я предпочитаю преобразовывать результаты функции НАИБОЛЬШИЙ() в текстовый формат; вырезать из него нужные номера строк; а затем преобразовывать их обратно в числовой формат...
Название: Re: Наибольшее значение, условие
Отправлено: zs5 от 31.05.2017, 09:14
Цитата: IKor от 30.05.2017, 16:46
Поэтому я предпочитаю преобразовывать результаты функции НАИБОЛЬШИЙ() в текстовый формат; вырезать из него нужные номера строк; а затем преобразовывать их обратно в числовой формат...
Perche... Сложить значение с номером строки
Название: Re: Наибольшее значение, условие
Отправлено: IKor от 31.05.2017, 13:29
Цитата: zs5 от 31.05.2017, 09:14Perche... Сложить значение с номером строки
Не вполне Вас понял.
Я предлагаю складывать целевое_значение (важно, чтобы оно было целым) с некоторым дробным числом, сгенерированным на основании уникального значения - например, номера строки. В результате мы получим вектор (столбец) числовых значений, в котором точно не будут встречаться одинаковые - т.е. его легко можно будет отсортировать по возрастанию / убыванию.
Название: Re: Наибольшее значение, условие
Отправлено: zs5 от 31.05.2017, 16:57
Цитата: IKor от 31.05.2017, 13:29
в котором точно не будут встречаться одинаковые
=СТРОКА()+Q7
Название: Re: Наибольшее значение, условие
Отправлено: IKor от 02.06.2017, 09:58
2 zs5
Идея заключается в том, чтобы при помощи формул по возможности корректно сортировать оригинальную таблицу данных, в которой присутствует столбец целых чисел с возможными повторяющимися значениями.
Если просто использовать функцию НАИМЕНЬШИЙ() / НАИБОЛЬШИЙ(), то одинаковые значения "отсортируются рядом", но окажется достаточно сложно различить их между собой для подтягивания данных других столбцов из оригинальной таблицы.
Именно поэтому я и предлагаю добавить дробную часть к целевому столбцу целых чисел, позволяющую гарантированно различить числа между собой, не нарушая оригинальный порядок сортировки (!)

Цитата: zs5 от 31.05.2017, 16:57
=СТРОКА()+Q7
Ваше же предложение, помимо того, что нарушает порядок сортировки столбца, так еще и не гарантирует уникальности данных в новом целевом столбце: сумма значения из ячеек столбца Q и номера его строки может оказаться одинаковой для разных ячеек...
Название: Re: Наибольшее значение, условие
Отправлено: zs5 от 02.06.2017, 10:19
Цитата: IKor от 02.06.2017, 09:58
сумма значения из ячеек столбца Q и номера его строки может оказаться одинаковой для разных ячеек...
это исключает ранг:
=РАНГ.РВ(Q4;$Q$4:$Q$59)
Название: Re: Наибольшее значение, условие
Отправлено: IKor от 02.06.2017, 11:14
ZS5
Я проверил Ваш способ сортировки, он так и не смог понять его логику...

Посмотрите прилагаемый файл. В нем я реализовал оба варианта - возможно, Вы имели в виду что-то другое...
Название: Re: Наибольшее значение, условие
Отправлено: zs5 от 02.06.2017, 12:57
Цитата: IKor от 02.06.2017, 09:58
сумма значения из ячеек столбца Q и номера его строки может оказаться одинаковой для разных ячеек...
файл прилагается
Название: Re: Наибольшее значение, условие
Отправлено: IKor от 02.06.2017, 16:16
Спасибо за разъяснения.
Признаю, что Ваш способ генерации уникальных индексов позволяет отсортировать столбец даже нецелых числовых значений.

Однако, как мне кажется, он некорректно обрабатывает нецелые числа в целевой переменной (разумеется, используемой мной способ также не справляется с ними, но он и не претендует :)):
=> почему Олег (целевая переменная = 1,97) получил индекс 2,2425, что больше индекса Пети, у которого значение целевой переменной было больше (2) => другими словами Ваш способ сортирует Олега после Пети, хотя Вы искусственно (уменьшив величину целевой переменной) "хотели поместить Олега перед Петей"
=> более того, изменение целевой переменной Олега в другую сторону (2 => 2,1) изменяет не только Олегов индекс, но и индекс Пети, что перемещает его в отсортированном списке выше Миши, хотя ни Мишину, ни Петину целевые переменные мы не меняли...

В любом случае, Ваш способ не кажется мне более простым и наглядным, по сравнению с используемый мной.
Сравните:
IKor: УникальныйИндекс = ЦелеваяПеременная + СТРОКА/Константу
ZS5: УникальныйИндекс = (ЦелеваяПеременная + СТРОКА)/Ранг(ЦелевыхПеременных)
Название: Re: Наибольшее значение, условие
Отправлено: zs5 от 03.06.2017, 09:15
Цитата: IKor от 02.06.2017, 16:16
способ генерации уникальных индексов позволяет отсортировать столбец даже нецелых числовых значений.
=РАНГ(Q3;$Q$3:$Q$8;1)+СЧЁТЕСЛИ($Q$3:Q3;Q3)-1
Название: Re: Наибольшее значение, условие
Отправлено: IKor от 06.06.2017, 10:34
2 zs5
Спасибо, я разобрался в представленной Вами логике.
Название: Re: Наибольшее значение, условие
Отправлено: zs5 от 06.06.2017, 10:39
Цитата: IKor от 06.06.2017, 10:34
2 zs5
Спасибо
а 2-ку за что поставили