|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
01.01.2013, 14:43 | #1 |
Deputy Bill Gates
Пользователь
Регистрация: 23.09.2008
Сообщений: 31
|
Простая, совсем простая формула
С новым годом!
И вот такая новогодная задача, вроде простая, но я запутался - таблица состоит всего из 3-х столбцов и 2 из них заполняются вручную. Записей много, тысячи и каждый день добавляется сотня-другая. Мне нужна всего одна простая (желательно) формула в 3-ем столбце. Таблица примерно такая: Код:
Например, Петров впервые появляется на второй строке, рядом с ним стоит число 9, и ему присваивается единица в третьем столбце. 2-е появление Петрова на 6-й строке, рядом с ним 7, присваивается 2. 3-е - на 10-й строке, рядом с ним 8, присваивается 3. 4-е - на 11-й строке, рядом с ним -5, присваивается 4. 5-е - на 14-й строке, рядом с ним 7, и ему присваивается 1, потому что отчет начинается заново так как при предидущем (4-м) появлении рядом с ним стояло -5 (отрицательное число). Это все. Надеюсь на красивое, простое решение. Последний раз редактировалось Niefer; 02.01.2013 в 03:02. |
02.01.2013, 07:10 | #2 |
Форумчанин
Регистрация: 24.12.2012
Сообщений: 776
|
Niefer, если средствами самой программы Excel не получается сделать или формулы получаются сложные, то можно попробовать использовать макросы.
|
02.01.2013, 12:22 | #3 | |
Форумчанин
Регистрация: 21.11.2010
Сообщений: 326
|
Вариант решения формулами в желтых ячейках, не уверен, что будет быстро считать если
Цитата:
PS: Что то мне это напоминает биржу, или какуюто другую азартную игру |
|
02.01.2013, 13:32 | #4 |
Новичок
СтарожилДжуниор
Регистрация: 05.02.2008
Сообщений: 9,487
|
у меня две формулы:
простая: Код:
Код:
Код:
вторая формула - это формула массива.
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
|
02.01.2013, 17:27 | #5 |
Новичок
СтарожилДжуниор
Регистрация: 05.02.2008
Сообщений: 9,487
|
Уважаемый Niefer,
а не затруднит-ли Вас определить какой из вариантов оказался наиболее производительным на тысячах строк?
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
|
02.01.2013, 18:46 | #6 |
Deputy Bill Gates
Пользователь
Регистрация: 23.09.2008
Сообщений: 31
|
@Скрипт
Нет, макросы исключаются. @MCH 1. Вы правы - действительно, должно быть 2, хотя надеюсь, эта опечатка никак не исказила идею. 2. Вы правы второй раз - задача связана с азартной игрой. 3. Ваша формула работает, спасибо. Однако проверить ее быстродействие (для приблизительно 50 тысяч записей) я смогу не раньше завтрашнего дня. @IgorGO Ваши формулы работают тоже, спасибо за внимание. И хотя они мне кажутся несколько громоздкими, это для меня все таки вопрос не красоты, а практической пригодности. В общем, выбор формулы определится после практических тестов и я об этом обязательно сообщу завтра. Еще раз спасибо всем. |
02.01.2013, 20:24 | #7 |
Форумчанин
Регистрация: 21.11.2010
Сообщений: 326
|
А это зря, если строк 50 тысяч, то любая формула построенная на массивах будет тормозить (здесь либо делать альтернативные варианты с использованием доп.столбцов и более быстрых функций - СЧЕТЕСЛИ/СУММЕСЛИ, либо макросы на массивах)
Протестировал на 2000 строчках, формулы пересчитываются поряда 2 секунд, при этом макрос работает в десятки (если не в сотни) раз быстрее, так на 50 тысяч строк макрос работает менее секунды Запустил формульное решение на 10000 строк - не дождался пересчета формул -------- UPD: В макросе была ошибка - исправил, файл перезалил Добавил формулу с доп. столбцом (Тест 3), у меня работает в 4 раза быстрее массивных формул, так что данную формулу теоретически можно использовать для 5000-10000 срок данных Последний раз редактировалось MCH; 03.01.2013 в 13:30. |
05.01.2013, 01:08 | #8 |
Deputy Bill Gates
Пользователь
Регистрация: 23.09.2008
Сообщений: 31
|
Итак, с учетом всех за и против (макросы, формулы массива, дополнителные столбцы) и с учетом моей конкретной цели, самым подходящим оказался вариант MCH с доп.столбцом и с SUMIF (из файла Niefer3.rar). Правда мне пришлось его немного изменить, так как в действительности моя задача несколько сложней, чем вышеописанная схема в моем первом посте.
Что касается быстродействия - для 50 тысяч записей все варианты IgorGO и MCH занимают по 10 минут и больше (мне не хватало терпения дождаться окончания пересчета). А вот варианту "Test4" от MCH потребовалось всего пол-секунды, но к сожалению макросы исключаются. В принципе я получил то, что хотел. Спасибо. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
простая БД Access | bwitcher | Фриланс | 4 | 27.05.2012 12:16 |
простая программа | stap | Паскаль, Turbo Pascal, PascalABC.NET | 3 | 21.12.2011 14:49 |
простая программа на Си | serrggeee | Общие вопросы C/C++ | 4 | 21.05.2011 22:59 |
Простая замена IP | NSvirus | Безопасность, Шифрование | 7 | 12.08.2010 14:45 |