Страницы: 1 2 След.
RSS
Как найти "самое раннее" и "самое позднее" значения из таблицы?
 
Добрый вечер, Уважаемые форумчане!

Есть нехитрая таблица (но большая) (пример во вложении)
Как найти самое раннее и самое позднее значения индекса для каждой фамилии?
Спасибо!
 
используйте МИН и МАКС
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
записи действительно упорядочены по фамилии и строго по дате времени?
если так первая запись по фамилии будет "Индекс самый ранний"  =ВПР(E3;$A$3:$C$29;3;0)
последняя запись по фамилии будет "Индекс самый поздний" =ПРОСМОТР(2;1/($A$3:$A$29=E3);$C$3:$C$29)
Лень двигатель прогресса, доказано!!!
 
Спасибо!
 
Правда я не понял, как это работает, ну да ладно )))))
И если не отсортировано по фамилии/времени, то наверно работать не будет..
 
Цитата
sibstar75 написал:
если не отсортировано по фамилии/времени
вариант PQ:
Скрытый текст
Соблюдение правил форума не освобождает от модераторского произвола
 
Цитата
buchlotnik написал: вариант PQ: Скрытый текст
Спасибо конечно, но это какое-то шаманство ))) Открыл Ваш вариант, не увидел в ячейках ни одной формулы, но нужные цифры откуда-то появились )))
Может когда-то изучу PQ, но наверно не в ближайшее время )))

Вариант Сергея вполне устраивает, но такое усложнение: если в перебираемых ячейках будет попадаться прочерк, то можно его пропускать и взять первое попавшееся число?

P.S. Эта функция ПРОСМОТР такая тормозная? Таблицу из 1600 строк она считала 5 мин, а возле таблицы из 800000 строк я наверно состарюсь? ))))
 
Цитата
sibstar75 написал:
Таблицу из 1600 строк она считала 5 мин
а у PQ на сотни тысяч строк уйдут секунды, даже на тормозном ноуте с которого пишу
Цитата
sibstar75 написал:
какое-то шаманство
текст этого шаманства под спойлером - это не формулы, это - запрос
Изменено: buchlotnik - 22.10.2019 07:38:34
Соблюдение правил форума не освобождает от модераторского произвола
 
Цитата
sibstar75 написал:
Эта функция ПРОСМОТР такая тормозная? Таблицу из 1600 строк она считала 5 мин, а возле таблицы из 800000 строк я наверно состарюсь? ))))
Проверьте скорость работы функции ИНДЕКС+ПОИСКПОЗ+СЧЁТЕСЛИ
Код
=ИНДЕКС($C$3:$C$29;ПОИСКПОЗ($E3;$A$3:$A$29;0)+СЧЁТЕСЛИ($A$3:$A$29;$E3)-1;)
может быть она устроит Вас больше
 
Цитата
sibstar75 написал:
Таблицу из 1600 строк она считала 5 мин
не верю!
По вопросам из тем форума, личку не читаю.
 
Цитата
БМВ написал:
не верю!
Ви таки на столько уверены за железо и антивиря ТС?
Вот горшок пустой, он предмет простой...
 
PooHkrd,  Если железо способно запустить Excel 2003, то просмотр справится с 1600 строками. Если файл удалось загрузить, несмотря на все попытки антивирусника этого недопустить, то на скорость расчета последний уже как правило не влияет.  Но в целом я и пишу, что не просмотр или excel виноват.
По вопросам из тем форума, личку не читаю.
 
Цитата
IKor написал:
Проверьте скорость работы функции ИНДЕКС+ПОИСКПОЗ+СЧЁТЕСЛИ
Спасибо, вечером смогу проверить..

Цитата
БМВ написал:
не верю!
Возможно, я не уточнил некоторые детали:
У меня есть таблица из 800000 строк, результирующая (куда нужно подставлять) - 50000 строк. Я запустил один столбец (функцию ПРОСМОТР), ждал, но не дождался (прошло наверно полчаса, посчиталось только 3% всего объема), хотя функция ВПР считала такой же по объему столбец из 50000 строк около 3 секунд (добавлю, что комп у меня совсем не тормознутый (4 потока по 3.2ГГц, 16гб оперативы) и в принципе, все летает), поэтому эта функция ПРОСМОТР мне и показалась такой тормознутой (в сравнении с ВПР конечно же), после этого я еще протянул ПРОСМОТР на 1600 строк только и она считала 5 мин (видимо потому, что просматривать то ей приходится все равно те же самые 800000 строк), после чего мне подумалось (прикинулось в уме) что один столбец из 50000 строк она будет считать часа 2-3, а таких столбцов у меня не один, а штук 10, вот так, в-общем ))))))

Цитата
БМВ написал: Если файл удалось загрузить, несмотря на все попытки антивирусника...
Excel 2016 у меня, winda 10 х64, и антивиря никакого нет (даже виндовый дефендер заглушен)
Поэтому виноват наверно все-таки эксель и ПРОСМОТР (так как сравниваю скорость работы с другой функцией - ВПР в этом же самом файле и на этом же самом объеме строк)

По поводу PQ я понял, что это какой-то язык запросов, типа как к базе данных, попробую на досуге как-нибудь покопать, что это, и с чем его едят ))))
Изменено: sibstar75 - 22.10.2019 14:26:45
 
Цитата
sibstar75 написал:
это какой-то язык
не, язык там - М, а Pоwer Query - это фреймворк и в нём можно и мышкой, только не такое шаманство как выше )))
Изменено: buchlotnik - 22.10.2019 12:04:49
Соблюдение правил форума не освобождает от модераторского произвола
 
Может дадите тогда пару ссылок на вменяемые мануалы, чтобы новичку с нуля понять, и чтобы с ходу мозг не обнулился ))))
 
Цитата
sibstar75 написал:
У меня есть таблица из 800000 строк
Когда начинают сыпать такими фразами, я не верю. Не верю в реальную необходимость АНАЛИТИЧЕСКОЙ обработки такого количества информации, особенно функциями вроде максимальный/минимальный. Это либо от баловства, либо от неправильной организации работы. Ведь все эти +100500 мильёнов строк не появились одномоментно и ниоткуда. Они вводились одна за одной, по времени. И если действительно требуется из такой кучи выбирать MAX/MIN, то кто мешал изначально добавить обработку, которая бы сравнивала вносимое значение с хранимым наибольшим и, при необходимости, обновляла значение этого наибольшего. Вот и все пирожки, наибольшее значение будет всегда известно без каких либо расчётов, формул и долгого ожидания.
И т.д. и т.п.
 
Так прям на этом сайте
Соблюдение правил форума не освобождает от модераторского произвола
 
Спасибо! Буду разбираться.

Цитата
Мартын написал: Когда начинают сыпать такими фразами, я не верю. Не верю в реальную необходимость АНАЛИТИЧЕСКОЙ
Ваши бы слова, да богу в уши (с))))))))
 
sibstar75, Допустим вас попросят перебрать кило гречневой крупы, только двумя разными способами.
1. перебирать каждый раз с начала по крупинке до первой попавшейся плохой и её откладывать. (VLOOKUP)
2. просмотреть все и в хорошие отложить последнюю из хороших и так, пока не будет две кучки (LOOKUP(2;1/….  )
Какой будет медленнее?
LOOKUP - быстрая функция и при равных задачах она не медленнее Vlookup, только задачу им дали разную, а с учетом совокупности задач, получили такое время выполнения.
По вопросам из тем форума, личку не читаю.
 
БМВ,
Раз уж речь пошла о сравнении скорости работы функций, то не окажется ли СЧЁТЕСЛИ такой же медленной - ей же тоже нужно пробежать все 800 тысяч строк...?
И правильно ли я понимаю, что считать количество конкретных фамилий другими способами (например, СУММПРОИЗВ) еще менее перспективно?  
 
IKor, для того чтоб ответить нужно проводить замеры. Делается не сложно. только естественно нужен объем и данных и объем вычислений, а далее для одинаковых условий, при отключенном персчете копируются те или другие формулы, и запускается пересчет или программно с таймером или руками, но с замером на глазок.

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

А еще проще , добавить индекс строки в исходные данные и сделать, как на втором листе. Этот вариант будет работать при любой сортировке.
Что-то мне подсказывает, что указанные объемы стандартными средствами будут обсчитаны почти мгновенно.
Изменено: БМВ - 22.10.2019 16:33:08
По вопросам из тем форума, личку не читаю.
 
БМВ, отчитываюсь )))
Ваш пример на втором листе мне не понятен, т.к. я плохо знаком со "сводными" и PQ, а вот согласно  рекомендациям с первого листа я все сделал:
1. Сначала посчитал "count of Фамилия" с помощью СЧЕТЕСЛИ (подсчет занял где-то 18 минут, с учетом того, что ей каждый раз пришлось пробежать все 800 тыс строк)
2. Затем уже подсчет нужных мне столбцов занимал около 2-3 сек на каждый (функция ИНДЕКС/ПОИСКПОЗ работает также быстро, как и ВПР)
Этот вариант вполне даже отличный!!! Спасибо Вам большое!!!
Остался последний вопрос, который видимо никто не заметил в пылу обсуждения первого :)
Иногда в индексах попадаются прочерки (дефис), хотелось бы его пропустить и взять первый численный индекс (ну и соответственно последний, если мы просматриваем с конца, как в случае с функцией ИНДЕКС/ПОИСКПОЗ, т.е. пропустить дефисы, которые в конце и взять первый численный индекс) (пример во вложении). Такое возможно?
 
sibstar75,  Я б вел два доп. столбца, один для первого, второй для последнего и их бы брал вместо исходного.
Цитата
sibstar75 написал:
я плохо знаком со "сводными"
а вот это плохо. Инструмент не сложный, а польза от него гигантская.
По вопросам из тем форума, личку не читаю.
 
Цитата
sibstar75 написал:
Такое возможно?
в PQ добавляется одна строчка для фильтрации и всё:
Скрытый текст
Соблюдение правил форума не освобождает от модераторского произвола
 
Рекомендую автору темы почитать этот раздел и следующие.
Владимир
 
Цитата
БМВ написал:
sibstar75 ,  Я б вел два доп. столбца, один для первого, второй для последнего и их бы брал вместо исходного.
Если я правильно понимаю, в вашем методе Вы просто забиваете дефисы численными индексами из следующей ячейки, причем индекс определенного человека может попасть в строку другого человека (если дефисы нескольких человек идут не прерываясь). Таким образом, если у какого-то человека совсем не будет численных индексов, а только дефисы, то к нему попадет индекс соседа? Такое нежелательно, и если фамилия кончилась, а численного индекса нет, то оставим в результирующей таблице дефис или пустую ячейку (думаю, через операнд И добавить еще проверку, что "Петров"<>"Петров", например). Но в принципе, мне Ваша идея понятна. Правда, я вижу, что в столбце поздних индексов у Вас снова появилась эта ненавистная функция ПРОСМОТР )))) Которая каждый столбец по часу будет считать, а их как минимум 10 ))))
 
sibstar75, не надо ненавидить функции, они хорошие для своих задач, переходите на PQ - ничего же сложного ;)
Соблюдение правил форума не освобождает от модераторского произвола
 
Цитата
buchlotnik написал:
в PQ добавляется одна строчка для фильтрации и всё:
А в Вашем примере, если у какой-то фамилии будут только дефисы и ни одного численного индекса, то что попадет в результирующую таблицу, индекс соседа или что-то другое?
 
Цитата
buchlotnik написал:
sibstar75 , не надо ненавидить функции, они хорошие для своих задач, переходите на PQ - ничего же сложного
Ну я уже почти перешел :)
Нашел этот редактор запросов, а в нем текст Вашего запроса. Работает прикольно: допустим меняем что-то в исходной таблице, затем нажимаем "Обновить запрос" и результирующая таблица тут-же меняется. Забил у Иванова одни дефисы, щёлк... и Иванов совсем исчез из результирующей таблицы... но нам нужно сохранить общий порядок таблицы, так как столбцов много и не было никакой путаницы. Как сделать такое условие, чтобы в случае, если у определенной фамилии одни только дефисы, то оставляем эту фамилию с дефисами все-таки?
 
Цитата
sibstar75 написал:
А в Вашем примере, если
а взять и попробовать религия не позволяет? И вообще если такая ситуация возможна - где это в примере (что есть - что надо)?
Изменено: buchlotnik - 23.10.2019 11:50:53
Соблюдение правил форума не освобождает от модераторского произвола
Страницы: 1 2 След.
Наверх