Страницы: 1 2 След.
RSS
Оптимизация расчетов по скорости
 
Добрый день УВ. Форумчане!  
Нужно попробовать упростить (оптимизировать по скорости) формулы, так как строк с данными получается около 10000 и когда они все заполнены считает очень долго...  
Понимаю что задача сложная, но очень прошу помочь...  
 
Логика формул:  
Столбец G:  
=ЕСЛИ(A2>0;(ЕСЛИ(ЕОШИБКА(ВПР($B2;VPRZ;2;0))=ИСТИНА;A2-1;ЕСЛИ(J2=1;ДАТАЗНАЧ(ПРАВСИМВ(ВПР($B2;VPRZ;3;0);8));ВПР($B2;VPRZ;2;0))));"")  
   A2>0 - проверят есть ли данные в строке, так как формулы протянуты на все 10000 строк, чтоб если нет данных то зря не лопатило.  
   ЕСЛИ(ЕОШИБКА(ВПР($B2;VPRZ;2;0))=ИСТИНА - Проверяю есть строка с нужным кодом на листе "ЗНВП"  
   A2-1 - Если строк нет то, дата указанна на листе НВП -1  
ЕСЛИ(J2=1;ДАТАЗНАЧ(ПРАВСИМВ(ВПР($B2;VPRZ;3;0);8)) - Дата также может содержаться в комментариях. Условие в столбце "J" проверяет есть ли в комментариях дата.    
   J2=1 - Если была дата  
ДАТАЗНАЧ(ПРАВСИМВ(ВПР($B2;VPRZ;3;0);8) - то преобразовать текст в дату и "записать"  
ВПР($B2;VPRZ;2;0) - Ну и если все предыдущее не верно и строка по коду найдена то "верни то что нашел"  
 
Условия в столбце "H":  
=ЕСЛИ(A2>0;(ПОИСКПОЗ(E2&F2&G2;Agent&KK&Data;0));"")  
   A2>0 - проверят есть ли данные в строке, так как формулы протянуты на все 10000 строк, чтоб если нет данных то зря не лопатило.  
   ПОИСКПОЗ(E2&F2&G2;Agent&KK&Data;0 - Ищет повторяющиеся коды в столбце "F". Код считается повторяющимся если принадлежит несколько раз одному и тому же агенту за одну дату.  
 
Условия в столбце "I":  
=ЕСЛИ(A2>0;(ЕСЛИ(СЧЁТЕСЛИ($H$1:H1;ПОИСКПОЗ(E2&F2&G2;Agent&KK&Data;0))=0;1;""));"")  
Нужно для поиска одинаковых кодов в столбце "H", если код уникален 1, если нет 0. условия те же, код считается повторяющимся если принадлежит несколько раз одному и тому же агенту за одну дату.  
 
Условия в столбце "J":  
=ЕСЛИ(A2>0;ЕСЛИ(ТИП(ДАТАЗНАЧ(ПРАВСИМВ(ВПР($B2;VPRZ;3;0);8)))=1;1;"");"")  
Проверяет являются ли 8-мь последних символов в строке комментария датой. Если да то ставит 1.
 
на вскидку  
1 именованные динамические диапазоны хороши только для укорачивания формул. убрать  
2 вместо СМЕЩ в дин диапазонах испльзовать ИНДЕКС
 
забыл  
вместо ВПР связка ИНДЕКС и ПОИСКПОЗ
 
{quote}{login=}{date=26.11.2010 03:50}{thema=}{post}на вскидку  
1 именованные динамические диапазоны хороши только для укорачивания формул. убрать  
2 вместо СМЕЩ в дин диапазонах испльзовать ИНДЕКС{/post}{/quote}  
 
Большое спасибо за скорый ответ!  
 
Именованные диапазоны специально сделал, так как неизвестно сколько будет данных... их может быть от 2000 до 10000, чтоб ВПР не проверял "больше чем нужно"  
 
{quote}{login=}{date=26.11.2010 03:51}{thema=}{post}забыл  
вместо ВПР связка ИНДЕКС и ПОИСКПОЗ{/post}{/quote}  
 
Не могли бы Вы привести пример как можно заменить ВПР с помощью ИНДЕКС и ПОИСКПОЗ
 
Давайте пример итоговой таблицы.
 
И если не сложно скажите как тут делать...  
"2 вместо СМЕЩ в дин диапазонах испльзовать ИНДЕКС"
 
{quote}{login=Serge 007}{date=26.11.2010 04:08}{thema=}{post}Давайте пример итоговой таблицы.{/post}{/quote}  
 
Итоговые данные слишком отличаются...  
Я после получения данных в этой таблице, забрасываю ее в сводную... и там уже "сортирую", потом кучкой макросов привожу к готовому виду... плюс там есть еще много данных... Мне б подсчет данных здесь сделать быстрым, остальное лопатит достаточно быстро
 
{quote}{login=razmus}{date=26.11.2010 04:19}{thema=Re: }{post}{quote}{login=Serge 007}{date=26.11.2010 04:08}{thema=}{post}Я после получения данных в этой таблице, забрасываю ее в сводную...{/post}{/quote}А я поэтому и спросил ;)  
 
Тогда вопрос на засыпку: зачем Вам формулы, если всё это можно сделать в сводной?
 
ИМХО, раз макросы уже используются, то почему бы и все остальные вычисления не делать макросом?, тем более, что файл большой...
 
{quote}{login=Serge 007}{date=26.11.2010 04:24}{thema=Re: Re: }{post}А я поэтому и спросил ;)  
 
Тогда вопрос на засыпку: зачем Вам формулы, если всё это можно сделать в сводной?{/post}{/quote}
 
{quote}{login=Михаил}{date=26.11.2010 04:26}{thema=}{post}ИМХО, раз макросы уже используются, то почему бы и все остальные вычисления не делать макросом?, тем более, что файл большой...{/post}{/quote}  
 
Да я дело в том что макросы писать не умею.. то что есть адаптировано, ну или доработано по мере сил.  
 
З.Ы.  
Постараюсь сделать пример...
 
{quote}{login=Serge 007}{date=26.11.2010 04:29}{thema=Re: Re: Re: }{post}{quote}{login=Serge 007}{date=26.11.2010 04:24}{thema=Re: Re: }{post}А я поэтому и спросил ;)  
 
Тогда вопрос на засыпку: зачем Вам формулы, если всё это можно сделать в сводной?{/post}{/quote}{/post}{/quote}  
 
То что я на этом листе делал, я думал сводной нельзя...
 
{quote}{login=razmus}{date=26.11.2010 04:32}{thema=Re: Re: Re: Re: }{post}  
То что я на этом листе делал, я думал сводной нельзя...{/post}{/quote}  
Давайте пример итоговой таблицы.
 
впр=индекс(нужн столбец;поискпоз)  
<EM><STRONG>Файл удален</STRONG> - велик размер - [<STRONG>МОДЕРАТОРЫ</STRONG>]</EM>
 
все быстрее чем VLOOKUP2
 
Пример.... На первом листе "Нажми на меня" запусти макрос...
 
Serge 007  
Не смотрели?
 
{quote}{login=razmus}{date=30.11.2010 12:03}{thema=}{post}Serge 007  
Не смотрели?{/post}{/quote}Ща глянул.  
Route - получить свожной невозможно.  
По остальным - надо описание каждого показателя (кроме Sum).
 
{quote}{login=Serge 007}{date=30.11.2010 12:48}{thema=Re: }{post}{quote}{login=razmus}{date=30.11.2010 12:03}{thema=}{post}Serge 007  
Не смотрели?{/post}{/quote}Ща глянул.  
Route - получить свожной невозможно.  
По остальным - надо описание каждого показателя (кроме Sum).{/post}{/quote}  
 
Описать принцип получения цифры я вряд ли смогу лучше чем в перво посте...  
Не могли бы Вы объяснить как делать подобные выборки с помощью сводной, а то в стандартных критериях слишком мало вариантов... среднее, максимум, ..... но это не то... Или я не правильно понимаю
 
{quote}{login=razmus}{date=30.11.2010 02:38}{thema=Re: Re: }{post}  
Описать принцип получения цифры я вряд ли смогу лучше чем в первоv посте...  
{/post}{/quote}А где в нём описание показателей Kz, Pay Agnmt, Dst, Pay 2 ?!
 
{quote}{login=Serge 007}{date=30.11.2010 02:45}{thema=Re: Re: Re: }{post}{quote}{login=razmus}{date=30.11.2010 02:38}{thema=Re: Re: }{post}  
Описать принцип получения цифры я вряд ли смогу лучше чем в первоv посте...  
{/post}{/quote}А где в нём описание показателей Kz, Pay Agnmt, Dst, Pay 2 ?!{/post}{/quote}  
 
А понял... сделаю)) Спасибо
 
{quote}{login=razmus}{date=30.11.2010 02:38}{thema=Re: Re: }{post}Не могли бы Вы объяснить как делать подобные выборки с помощью сводной, а то в стандартных критериях слишком мало вариантов...{/post}{/quote}Вычисляемые поля есть и вычисляемые элементы. Но пока я не пойму как получилась итоговая таблица - подробнее объяснить не смогу.
 
Пока можно здесь  
http://www.excelworld.ru/index/knigi_po_svodnym_tablicam/0-13  
почитать.
 
Первая сводная  
Агент|Дата|Маршрут|Количество уникальных C/K на листе НВП, по одному агенту за один день|Сумма  
В итоговой таблице  
Agent|Data|Route|KZ|Sum  
 
Вторая сводная  
Агент|Дата|Сумма  
В итоговой таблице  
Agent|Data|Pay Agent  
***Agent - все кроме пусто, FormPay - все кроме 2, Comments - только "пустой квадратик" и (пусто)  
 
Третья сводная  
Агент|Дата|Сумма  
В итоговой таблице  
Agent|Data|Pay 2  
***Agent - все кроме пусто FormPay - только 2  
 
Четвертая сводная  
Агент|Дата|Сумма  
В итоговой таблице  
Agent|Data|Dst  
***Agent - все кроме пусто Comments - все кроме "пустой квадратик" и (пусто)  
 
З.Ы.  
Надеюсь хоть более менее объяснение получилось...
 
{quote}{login=razmus}{date=30.11.2010 03:04}{thema=}{post}Первая сводная  
Агент|Дата|Маршрут|Количество уникальных C/K на листе НВП, по одному агенту за один день|Сумма  
В итоговой таблице  
Agent|Data|Route|KZ|Sum  
 
Вторая сводная  
Агент|Дата|Сумма  
В итоговой таблице  
Agent|Data|Pay Agent  
***Agent - все кроме пусто, FormPay - все кроме 2, Comments - только "пустой квадратик" и (пусто)  
 
Третья сводная  
Агент|Дата|Сумма  
В итоговой таблице  
Agent|Data|Pay 2  
***Agent - все кроме пусто FormPay - только 2  
 
Четвертая сводная  
Агент|Дата|Сумма  
В итоговой таблице  
Agent|Data|Dst  
***Agent - все кроме пусто Comments - все кроме "пустой квадратик" и (пусто)  
 
З.Ы.  
Надеюсь хоть более менее объяснение получилось...{/post}{/quote}  
 
Первая сводная берет данные с листа НВП, 2,3 и 4-ая с листа Pay
 
{quote}{login=}{date=26.11.2010 04:49}{thema=}{post}впр=индекс(нужн столбец;поискпоз)  
{/post}{/quote}  
 
Что-то не как не пойму как использовать данную связку... не могли бы Вы привести пример...  
 
Serge 007  
Ну как смотрели? Или может описание вышло не корректным..
 
______________
 
{quote}{login=}{date=02.12.2010 02:01}{thema=}{post}______________{/post}{/quote}  
Спасибо понял)) Работает быстрее ВПР  
 
Не скажите как можно научить эту связку понимать именованные диапазоны и как сделать так чтоб этот диапазон вычислялся только 1-ин раз, а не каждый раз для каждой формулы
 
не нужно использовать имена без крайней нужды
 
{quote}{login=}{date=03.12.2010 12:10}{thema=}{post}не нужно использовать имена без крайней нужды{/post}{/quote}  
Понял спасибо.  
 
А для подсчета ячеек с цифрами такой вариант не работает =ПОИСКПОЗ("*";С4:С65536;-1)  
 
Будет ли справедлив такой?  
=(СЧЁТЕСЛИ(С:С;"")-65536)*-1  
(формула находится в С2)  
 
тогда полная формула замены ВПР с диапазонами будет  
=ИНДЕКС($C$4:ИНДЕКС($C$4:$C$65536;$C$2);ПОИСКПОЗ($L$1;$B$4:ИНДЕКС($B$4:$B$65536;$B$2););$M$3)
Страницы: 1 2 След.
Читают тему
Наверх