Страницы: 1
RSS
Отбор первых значений в таблице данных
 
Здравствуйте. Есть такая задача: из таблицы нужно вытащить только первые значения в столбце, отвечающие определенному условию. Вытаскивать значения нужно не в ячейку, а в диапазон. Думаю что надо применять формулу массива, но как это сделать никак не придумаю.
 
{quote}{login=Anatoliy }{date=15.05.2012 12:27}{post}... Есть такая задача... Думаю что надо...{/post}{/quote}  
Правильно - надо думать, тем более, что это ВАША задача... А еще надо посетить разделы "Приемы", "Копилка", использовать поиск, познакомиться с расширенным фильтром, сводными таблицами, извлечением/подсчетом уникальных, подстановкой к ним необхолдимых данных... Дерзайте! Хотя бы один вами выполненный вариант будет, а там... посмотрим... ;) -73622-
 
В том то и дело что к разделу "Форум" обратился после разделов "Приемы" и "Копилка". И так, как там вариантов решения не увидел, решил спросить людей знающих. Ну и получил исчерпывающий ответ- задача ваша - решайте сами... вообщем понятно.  
 
А по поводу  "Дерзайте! Хотя бы один вами выполненный вариант будет" - если человек обращается за помощью, это не значит, что он хочет сделать работу чужими руками. просто иногда у него может не получиться сделать то, что кому то кажется проще простого. Да и количество выполненных лично мной вариантов вряд ли кто то может посчитать.
 
{quote}{login=Anatoliy }{date=15.05.2012 01:01}{thema=}{post}... И так, как там вариантов решения не увидел... {/post}{/quote} Уточним: "познакомиться с расширенным фильтром" - это здесь http://www.planetaexcel.ru/tip.php?aid=130, способ 3, однако проглядели... ;) Да, что касается сводных, то см. скрин - пропустить сложно... -97821-
 
Поинтересуйтесь, что написано вместо слова "Сидоров". Вот из-за такой мелочи люди часами мучаются и не понимают, что в формуле не так.
"..Сладку ягоду рвали вместе, горьку ягоду я одна."
 
Зря вы набросились на Анатолия, мне тоже интересно как можно решить эту задачку, слежу за той темой.  
 
Помнится Владимир как то давал пример массива выбора значений, но как сделать что бы они были уникальными... надо ещё придумать  
{=ИНДЕКС($C$2:$C$21;НАИМЕНЬШИЙ(ЕСЛИ($B$2:$B$21=F$2;СТРОКА($C$2:$C$21)-СТРОКА(C$2)+1);СТРОКА(1:1)))}
Работать надо не 12 часов, а головой.
 
Только для Leanna_ы:  
 
 
=ИНДЕКС($C$2:$C$21;НАИБОЛЬШИЙ(ЕСЛИ((ПОИСКПОЗ(ЕСЛИ($B$2:$B$21=F$2;$C$2:$C$21);ЕСЛИ($B$2:$B$21=F$2;$C$2:$C$21);0)=СТРОКА($A$2:$A$21)-1*(F$2=$B$2:$B$21));СТРОКА($A$2:$A$21)-1);СТРОКА(A1)))
"..Сладку ягоду рвали вместе, горьку ягоду я одна."
 
{quote}{login=Leanna}{date=15.05.2012 01:32}{thema=}{post}Зря вы набросились на Анатолия, мне тоже интересно как можно решить эту задачку{/post}{/quote}:-) Странная логика (или формулировка?): если было бы неинтересно, то не зря? :-)
 
Вау! Вот это виражи! Работать работает, но как это повторить не представляю.  
 
В ступор вводит эта часть:  
ПОИСКПОЗ(ЕСЛИ($B$2:$B$21=F$2;$C$2:$C$21);ЕСЛИ($B$2:$B$21=F$2;$C$2:$C$21);0)  
можно ли узнать как она работает, что выдает?  
 
из того что ясно:  
ЕСЛИ($B$2:$B$21=F$2;$C$2:$C$21)    
- это выдаст массив типа_груза только по Иванову, остальные нули.  
 
ЕСЛИ((ПОИСКПОЗ(ЕСЛИ($B$2:$B$21=F$2;$C$2:$C$21);ЕСЛИ($B$2:$B$21=F$2;$C$2:$C$21);0)=СТРОКА($A$2:$A$21)-1*(F$2=$B$2:$B$21)  
- отсюда понимаю что СТРОКА($A$2:$A$21)-1*(F$2=$B$2:$B$21) выдаст массив только с теми номерами строк, где есть Иванов.  
Ну, дальше наибольшим и индексом всё просто понятно.  
 
Если это возможно объясните пожалуйста, как происходит в ПОИСКПОЗ отбор нужных значений, ведь для первого араметра "искомое_значение" нужно только одно искомое слово, у нас же тут массив слов. Где появляется условие для ПОИСКПОЗ, что искать надо щебень или песок.  
Не могу понять
Работать надо не 12 часов, а головой.
 
Формула массива:  
=ИНДЕКС($C$1:$C$21;МИН(ЕСЛИ($B$1:$B$21=F$2;ЕСЛИ(ЕНД(ПОИСКПОЗ($C$1:$C$21;G$2:G2;));СТРОКА($1:$21)))))  
Первая строка задействована для обхода ошибки ниже выведенного перечня работ. В С1 ввести  
="" или "больше-ничего_не_возил"  
 
Если нужен заголовок, можно добавить строку.  
 
По вопросу.  
ПОИСКПОЗ({2;1;3;1;5};{2;1;3;1;5};0)  
Поиск точного соответствия. Это лягушка поняла :)  
Не поняла - ниже:  
последовательно ищем позиции значений первого массива во втором массиве. Из примера видно, что для единицы (и первой, и второй) будет найдена позиция "2". А дальше проверка: ЕСЛИ(ПОИСКПОЗ(...) совпадает с позицией элемента в исходном массиве, то...(кстати, "*1" лишнее)).  
Т.е. из исходного массива отбираются значения, которые встречаются в нем первый раз - таким образом формируется массив уникальных работ для выбранного работника.
 
Т.е. ПОИСКПОЗ({2;1;3;1;5};{2;1;3;1;5};0) выдает массив {1;2;3;2;4}.    
 
Очень спасибо за объяснения! Теперь ясно))
Работать надо не 12 часов, а головой.
Страницы: 1
Читают тему
Наверх