Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Microsoft Office (Word, Excel, Outlook и т.д.) (http://forum.oszone.net/forumdisplay.php?f=115)
-   -   [решено] Выбор уникальных значений из списка, подсчет их количества и суммы (http://forum.oszone.net/showthread.php?t=239740)

Farrukhjon 01-08-2012 08:17 1962519

Выбор уникальных значений из списка, подсчет их количества и суммы
 
Вложений: 1
Помогите народ. У меня такая зада нужно автоматизировать. Файл Exсel прилагается. Версия MS Office не имеет значение. Думаю обойдется без скрипта, только с формулами было бы лучше. Гурманам, фанатам спасибо.

okshef 01-08-2012 08:35 1962532

В ячейку Н4 формулу:
Код:

=СЧЁТЕСЛИ($D$3:$D$27;G4)
и протяните по диапазону

Можно и больше, но если вам нужен только 1 столбец...
Нет, не удержался... Например, для столбца I
Код:

=СУММЕСЛИ($D$3:$D$27;G4)
или
Код:

=СУММПРОИЗВ(($D$3:$D$27=G4)*G4)
или формула массива
Код:

=СУММ(($D$3:$D$27=G4)*G4)

Farrukhjon 01-08-2012 08:51 1962543

Цитата:

Цитата okshef
Нет, не удержался... Например, для столбца I
Код: »

это для какой ячейки?

Delirium 01-08-2012 08:56 1962545

Цитата:

Цитата Farrukhjon
это для какой ячейки? »

Цитата:

Цитата Farrukhjon
для столбца I »


Farrukhjon 01-08-2012 08:59 1962548

Delirium, для столбца 1 ячейка g4 выдает ошибку. По этому я спрашиваю!!!

okshef 01-08-2012 09:13 1962554

Для I4

Farrukhjon 01-08-2012 09:20 1962559

okshef, у меня I4 и так стоит формула, только у меня проще. Мне б g4 надо автоматизировать было бы еще лучше.

okshef 02-08-2012 08:52 1963265

Вложений: 1
Переименовал вашу тему, обратился к спецам за формулой для G4
Код:

=НАИМЕНЬШИЙ(ЕСЛИ(ПОИСКПОЗ(D$3:D$27;D$3:D$27;)=СТРОКА(D$3:D$27)-2;D$3:D$27);СТРОКА(A1))
Вводится как формула массива (Ctrl + Shift + Enter)
Протягиваете ее вниз до тех пор, пока не появится сообщение об ошибке. Остальное мы уже обсуждали.

В файле выполнена автоматизация с помощью сводной таблицы - мне нравится :)

Delirium 02-08-2012 09:02 1963271

Цитата:

Цитата okshef
=НАИМЕНЬШИЙ(ЕСЛИ(ПОИСКПОЗ(D$3:D$27;D$3:D$27;)=СТРОКА(D$3:D$27)-2;D$3:D$27);СТРОКА(A1)) »

ЖЖЖЕСТЬ :)

okshef 02-08-2012 09:05 1963277

Delirium, это самая оптимальная :) Но согласись - работает красиво!

Поэтому я люблю сводные

Farrukhjon 02-08-2012 13:00 1963397

okshef, Да, огромное вам спасибо! Вы мне очень помогли. А вот строка
Цитата:

Цитата okshef
СТРОКА(A1)) »

чо тут делает не понял... А в вашем файле ни чего такого не нашел или я не понял?!...
Все-таки в Excel-е неограниченные возможности. Не боюсь этого слова, всю жизнь человек находит в нем чего-то новое для себя, так значить одной жизни мало для освоения Excel.

Iska 02-08-2012 23:48 1963807

Цитата:

Цитата okshef
Переименовал вашу тему, »

Спасибо. Я только теперь начал понимать, что же хотел автор получить на самом деле.

читать дальше »
Ей-ей, иной раз смотришь на вопрос и вспоминается карикатура времён холодной войны: за трибуной стоит президент, на трибуне микрофоны, из-за спины к микрофонам тянется представитель из его окружения, поясняющий для прессы: «После речи президента последует пресс-конференция о том, как следует понимать то, что он хотел сказать».


Цитата:

Цитата Delirium
ЖЖЖЕСТЬ :) »

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

Farrukhjon 03-08-2012 07:48 1963881

Цитата:

Цитата Iska
Я только теперь начал понимать, что же хотел автор получить на самом деле. »

Не очень-то понял что вы имеете введу?

okshef 03-08-2012 10:49 1963970

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

Первая:

Как вы заметили, для построения ранжированного списка используется функция "НАИМЕНЬШИЙ", аргументами которой - "НАИМЕНЬШИЙ(массив, k)" - является массив и некое число, которое показывает какое по счету из ряда чисел вам нужно. Например, в вашем случае есть числа 4, 5, 6, 7, 8
Если k=2, то функция вернет 5, потому что это второе наименьшее число из всех, если k=4, то 7.
Строка(А1)=1. При протягивании функции вниз Excel автоматически изменит А1 на А2 и аргумент функции "НАИМЕНЬШИЙ" изменится на 2 (СТРОКА(А2)=2) и вы получите второе наименьшее число. Таким образом получите ранжированный список.

Вторая:

В справке написано
Цитата:

Если значение аргумента «ссылка» является диапазоном ячеек, а функция СТРОКА введена как вертикальный массив, функция СТРОКА возвращает номера строк, указанных в аргументе «ссылка», в виде вертикального массива.
А они в свою очередь нужны для осуществления векторного произведения
ПОИСКПОЗ(D$3:D$27;D$3:D$27;)=СТРОКА(D$3:D$27)-2

Как-то так.

Iska 03-08-2012 12:02 1964028

Цитата:

Цитата Farrukhjon
Не очень-то понял что вы имеете введу? »

Я имел в виду, что я по Вашему первому посту изначально толком не понял Ваших потребностей.

Farrukhjon 03-08-2012 13:17 1964079

okshef, Вот что я выбрал
1 столбец
Код:

=НАИМЕНЬШИЙ(ЕСЛИ(ПОИСКПОЗ(D$3:D$27;D$3:D$27;)=СТРОКА(D$3:D$27)-2;D$3:D$27);СТРОКА(A1))
2 столбец =СЧЁТЕСЛИ($D$3:$D$27;G4)
3 столбец =СУММПРОИЗВ(($D$3:$D$27=G4)*G4)

Если во время создания еще возникнуть вопросы непременно вам обращусь. Я начал уже создавать думаю за месяц успею создать...
Iska, просто название темы изначально было другая и потом okshef изменил название.

Iska 03-08-2012 13:38 1964093

Цитата:

Цитата Farrukhjon
Iska, просто название темы изначально было другая и потом okshef изменил название. »

Вот и я про то же: когда okshef сменил название темы, я начал понимать.

Обрамляйте формулы тэгом [code] или устанавливайте флажок «[*] Отключить смайлики в тексте» в параметрах поста (первое предпочтительнее).

Farrukhjon 06-08-2012 09:49 1965355

Вложений: 1
Столкнулся с такой проблемой. Постараюсь объяснить. Если удалить хоть одну строку цены все результаты выдают н\д. А для меня так не пойдет. Каждый раз изменить формулу не хочется. Много времени отнимает. Ведь каждый день одинаково не продаются же диски...

okshef 06-08-2012 09:59 1965364

Все правильно. К сожалению при отсутствии данных вы будете получать ошибку. Поэтому либо удаляйте всю строку целиком, либо нужно нагромождать формулу для обработки ошибки.

В сводной таблице такой проблемы нет :)

Farrukhjon 06-08-2012 10:01 1965368

okshef, Мне в этой таблице нужно изменить формулу чтобы не были ошибки.

okshef 06-08-2012 10:04 1965369

Вопрос: у вас это поле так и останется пустым, или будет когда-то чем-то заполнено?
То есть пустота временная?

А "0" поставить нельзя?

Farrukhjon 06-08-2012 10:11 1965379

okshef, 0 поставил не получается. Мне чтобы если пусто не брал если заполнено то брал. не всегда строки заполняются.

okshef 06-08-2012 10:14 1965387

Вы не ответили на вопрос: пустоты зарезервированы? То есть в будущем планируется их заполнить или нет?

Farrukhjon 06-08-2012 10:16 1965389

okshef, Иногда могут заполниться и иногда вообще пустоты остаются.

okshef 06-08-2012 11:43 1965423

Код:

=НАИМЕНЬШИЙ(ЕСЛИ(ЕСЛИ(ЕНД(ПОИСКПОЗ(D$3:D$27;D$3:D$27;));0;ПОИСКПОЗ(D$3:D$27;D$3:D$27;))=СТРОКА(D$3:D$27)-2;D$3:D$27);СТРОКА(A1))
Меня не благодарите - формула не моя. Обращался на Планету

Но учтите. Некоторые значения у вас встречаются только один раз. И если исчезнут они - будут новые ошибки, в частности, отсутствие числа. Тогда придется изменять формулы сумм.

Farrukhjon 06-08-2012 12:38 1965448

Цитата:

Цитата okshef
Но учтите. Некоторые значения у вас встречаются только один раз. И если исчезнут они - будут новые ошибки, в частности, отсутствие числа. Тогда придется изменять формулы сумм. »

Извините это еще очередная проблема...
Ведь в моем случае не всегда встречаются некоторые суммы.

okshef 06-08-2012 20:48 1965730

Farrukhjon, в этом случае я перехожу от намеков к настоятельной рекомендации использовать сводную таблицу. Поверьте, это гораздо проще.

Farrukhjon 07-08-2012 07:25 1965942

okshef, Если честно ничего такого я в вашей сводной таблицы не нашел. Оно не изменяется если я изменяю данные. Мне нужно добить того чего я уже начал думаю остался всего один шаг.

okshef 07-08-2012 10:26 1966047

Цитата:

Цитата Farrukhjon
Оно не изменяется »

ПКМ по сводной - "Обновить"
А как вы хотели? Да, сводная таблица статична, и приходится обновлять, но зато нет головной боли писать формулы в 100 знаков.

Farrukhjon 07-08-2012 15:42 1966264

okshef, тогда я попробую обратиться на планету или через VBA, если можно сделать, надо бы.

okshef 08-08-2012 09:30 1966655

Farrukhjon, чтобы составить любую программу, необходим ее алгоритм. Как вы его себе представляете в этом случае?
В целях познавательных или для время убиения - это достойная задача, практического же смыла у нее нет никакого. Лучше уж формулы...
Попытаюсь набросать алгоритм в общих чертах.
=================
1. Мы люди ленивые, и программа должна запускаться при изменениях на листе
2. Формирование массива и его сортировка
3. Удаление всей имеющейся старой таблицы для подсчетов.
4. Заполнение столбцов
а) данными
б) формулами 2-го столбца
в) формулами 3-го столбца
г) суммами и количествами
=================
Ну как? И это вместо одной строчки кода при наличии сводной
Код:

RefreshAll
Я не могу понять, почему вы так упорно от нее уклоняетесь? Если не знаете с чего начать - скажите - я вам даже видео запишу.
Впрочем, уговаривать больше не буду. Вопрос достаточно проработан, чтобы размусоливать его еще постов на 10-20.

Farrukhjon 08-08-2012 16:34 1966894

okshef, честно говоря я вообще не мог использовать вашу сводную таблицу. Вообще не понял?

okshef 09-08-2012 09:16 1967184

Смотрите


Время: 03:36.

Время: 03:36.
© OSzone.net 2001-