|
|
|
Evaluate
|
|||
|---|---|---|---|
|
#18+
Почему не работает так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. Код: plaintext 1. 2. 3. 4. 5. 6. 7. Код: plaintext 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2007, 15:11:43 |
|
||
|
Evaluate
|
|||
|---|---|---|---|
|
#18+
redsky...как правильно записать функцию Evaluate, чтобы при этом Книга4.xls, на которую ссылаемся, была закрыта? Никак :-( Насколько я понимаю, формулы могут считывать значения из закрытых книг только когда они внесены в ячейку. Тут либо MS Query, либо ADO, либо что-то в таком роде: /topic/346974&hl=executeexcel4macro#3238038 KL [MVP - Microsoft Excel] ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2007, 15:35:05 |
|
||
|
Evaluate
|
|||
|---|---|---|---|
|
#18+
KL (XL) redsky...как правильно записать функцию Evaluate, чтобы при этом Книга4.xls, на которую ссылаемся, была закрыта? Никак :-( Насколько я понимаю, формулы могут считывать значения из закрытых книг только когда они внесены в ячейку. Тут либо MS Query, либо ADO, либо что-то в таком роде: /topic/346974&hl=executeexcel4macro#3238038 KL [MVP - Microsoft Excel] +1 я сам долго мучался, потом понял что никак и остановился на 2 вариантах: 1) подставлять всё таки в ячейку Эксель, но только сразу ограничение - нельзя использовать в пользовательской функции на листе! 2) ADO - вместо ВПР в этом случае сразу в строке запроса условие задаёшь! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2007, 16:43:47 |
|
||
|
Evaluate
|
|||
|---|---|---|---|
|
#18+
Deggasad 2redsky Ё-маё, так мы же это с тобой и проходили уже!!! туточки ;) Тогда я не рассматривал функцию Evaluate. Сейчас появилась (наивная) мысль, что она может помочь. А то через ADO долговато считает (2000 ячеек - 3 минуты). Но всё-равно,- считает:). Думаю, вопрос исчерпан. Всем спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2007, 17:12:00 |
|
||
|
Evaluate
|
|||
|---|---|---|---|
|
#18+
redsky...А то через ADO долговато считает (2000 ячеек - 3 минуты). Но всё-равно,- считает:)... Здесь что-то не так - процедура изъятия данных (даже из 50000 ячеек) должна занимать ну максимум секунду даже на маломощной машине. Может покажешь код и опишешь поподробнее ситуацию? KL [MVP - Microsoft Excel] ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2007, 17:53:05 |
|
||
|
Evaluate
|
|||
|---|---|---|---|
|
#18+
KL (XL)Здесь что-то не так - процедура изъятия данных (даже из 50000 ячеек) должна занимать ну максимум секунду даже на маломощной машине. Может покажешь код и опишешь поподробнее ситуацию? http://www.sql.ru/forum/actualthread.aspx?tid=443671&hl=ado#4313096 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2007, 18:08:38 |
|
||
|
Evaluate
|
|||
|---|---|---|---|
|
#18+
KL (XL)Здесь что-то не так - процедура изъятия данных (даже из 50000 ячеек) должна занимать ну максимум секунду даже на маломощной машине Вполне может быть и так: Для рассчёта 1 значения анализируется диапазон C4:X450 (а это 9900 ячеек). Следовательно: 2000 значений * 9900 ячеек = 19 800 000 ячеек. 19 800 000 / 50 0000 = 396 сек. 396 сек / 60 = 6,6 мин. (на маломощной машине). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2007, 18:24:04 |
|
||
|
Evaluate
|
|||
|---|---|---|---|
|
#18+
redsky Deggasad 2redsky Ё-маё, так мы же это с тобой и проходили уже!!! туточки ;) Тогда я не рассматривал функцию Evaluate. Сейчас появилась (наивная) мысль, что она может помочь. А то через ADO долговато считает (2000 ячеек - 3 минуты). Но всё-равно,- считает:). Думаю, вопрос исчерпан. Всем спасибо. 1) ну да, это ведь я рассматривал, но так как не получилось. то и не упоминал! Я думаю что можно и побыстрее сделать, возможно задачу пересмотреть немного! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2007, 13:10:55 |
|
||
|
Evaluate
|
|||
|---|---|---|---|
|
#18+
Я так понял у Вас 2000 файлов для анализа? Но код по моему не слишком оптимизирован. Удалите всё лишнее в циклах. Может быть создавать обьединённые запросы в SQL или ещё какую-нибудь мутотень. Можно посмотреть рабочие материалы (min)? Может быть поможем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2007, 15:08:16 |
|
||
|
Evaluate
|
|||
|---|---|---|---|
|
#18+
redskyВполне может быть и так: Для рассчёта 1 значения анализируется диапазон C4:X450 (а это 9900 ячеек). Следовательно: 2000 значений * 9900 ячеек = 19 800 000 ячеек. 19 800 000 / 50 0000 = 396 сек. 396 сек / 60 = 6,6 мин. (на маломощной машине). redsky http://www.sql.ru/forum/actualthread.aspx?tid=443671&hl=ado#4313096 Ну конечно, если для каждого из 2000 искомых значений, устанавливать соединение, вытаскивать массив, осуществолять поиск и возвращать результат, то да. Вот тут уже излагались все известные варианты с использованием формул: http://groups.google.com/group/microsoft.public.excel.worksheet.functions/msg/ac443753560f0075?dmode=source&hl=en Думаю, весь подход надо пересматривать и почти точно отказываться от пользовательских функций вытаскивающих данные из др. книг. KL [MVP - Microsoft Excel] ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2007, 15:36:56 |
|
||
|
Evaluate
|
|||
|---|---|---|---|
|
#18+
ДмитЯ так понял у Вас 2000 файлов для анализа? Но код по моему не слишком оптимизирован. Удалите всё лишнее в циклах. Может быть создавать обьединённые запросы в SQL или ещё какую-нибудь мутотень. Можно посмотреть рабочие материалы (min)? Может быть поможем. Попробую прикрепить файл. 1) "0 Balance" надо разместить на диск C:/ 2) В документе Н13 измените дату в ячейке "С3" на 22.06.2007 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2007, 16:05:32 |
|
||
|
Evaluate
|
|||
|---|---|---|---|
|
#18+
Я уже в предыдущий раз говорил по-моему, ну да повторюсь: Быстрее всего, по-моему, будет сделать формирование макросом текста формулы и запихивать её в ячейку. Запускать это всё дело по событию Private Sub Worksheet_Change(ByVal Target As Range) Только нужно обработки всякие поставить. Типа пересчитывать только изменённые ячейки. Как сделать формулу мы уже обсуждали, можно посмотреть по вышеуказаанной ссылке! Ранее вы сказали что идея эта не подходит так как сложная структура файла (тут могу ошибаться, но по-моему так), но в присланном примере сложной структуры нетути, пользовательская функция забита в один столбец, переменные размещены либо в постоянном месте, либо смещены относительно результирующей на одно и то же кол-во ячеек - это не идеальный вариант для обработки по событию. Воообщим вот... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2007, 23:23:57 |
|
||
|
Evaluate
|
|||
|---|---|---|---|
|
#18+
DeggasadРанее вы сказали что идея эта не подходит так как сложная структура файла (тут могу ошибаться, но по-моему так), но в присланном примере сложной структуры нетути, пользовательская функция забита в один столбец, переменные размещены либо в постоянном месте, либо смещены относительно результирующей на одно и то же кол-во ячеек - это не идеальный вариант для обработки по событию. Воообщим вот... Это был один из пары десятков файлов, где используется формула. В других структура вовсе иная и колличество формул такого типа варьируется (где 10, где 150, а где и 1500). Главное, что она работает, а уже улучшение этой формулы не должно занимать больше времени, чем она приносит его экономию :). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2007, 03:09:19 |
|
||
|
Evaluate
|
|||
|---|---|---|---|
|
#18+
redsky DeggasadРанее вы сказали что идея эта не подходит так как сложная структура файла (тут могу ошибаться, но по-моему так), но в присланном примере сложной структуры нетути, пользовательская функция забита в один столбец, переменные размещены либо в постоянном месте, либо смещены относительно результирующей на одно и то же кол-во ячеек - это не идеальный вариант для обработки по событию. Воообщим вот... Это был один из пары десятков файлов, где используется формула. В других структура вовсе иная и колличество формул такого типа варьируется (где 10, где 150, а где и 1500). Главное, что она работает, а уже улучшение этой формулы не должно занимать больше времени, чем она приносит его экономию :). Я же просто мнение высказываю, а решать вам. Может например структуру исходных файлов пересмотреть ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2007, 07:36:44 |
|
||
|
Evaluate
|
|||
|---|---|---|---|
|
#18+
Конечно в формуле листа (на листе их немеренно) нельзя открывать файл, искать значение, закрывать файл. Это займёт кучу времени, что и происходит. По этому моё предложение: окрыть файлы один раз (например на событие измененмия ячеек с датами С2:С3), извлечь данные (хотя бы в дополнительный лист) и потом уже анализировать их (наверно лучше стандартными формулами Excel'я) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2007, 22:02:41 |
|
||
|
|

start [/forum/topic.php?fid=61&msg=34678530&tid=2182569]: |
0ms |
get settings: |
8ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
110ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
56ms |
get tp. blocked users: |
2ms |
| others: | 228ms |
| total: | 443ms |

| 0 / 0 |
