Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.09.2015, 11:47   #1
Partall
Новичок
Джуниор
 
Регистрация: 18.09.2015
Сообщений: 5
Вопрос запись формулы из VBA в ячейку

народ, помогите плз. второй день парюсь. В чем ошибка? Ругается на подчеркнутое
Код:
Sub DeleteEmptyRows()
    LastRow = ActiveSheet.UsedRange.Row - 1 + ActiveSheet.UsedRange.Rows.Count
    Application.ScreenUpdating = False
    For r = LastRow To 2 Step -1
        If ActiveSheet.Cells(r, 2) = 0 Then Rows(r).Delete
        ActiveSheet.Cells(r, 10).Formula = "=trunc(RC[-9])"
        ActiveSheet.Cells(r, 11).Formula = "=if(R[1]C[-1]>RC[-1];""Finish day"";if(RC[-1]>R[-1]C[-1];""Start day"";if(R[1]C[-1]<1;""Finish day"";"""")))"
       
    Next r

End Sub
Partall вне форума Ответить с цитированием
Старый 18.09.2015, 12:05   #2
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

У меня работает с разделителями запятыми.
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 18.09.2015, 12:10   #3
Partall
Новичок
Джуниор
 
Регистрация: 18.09.2015
Сообщений: 5
По умолчанию

вместо ; ?
Partall вне форума Ответить с цитированием
Старый 18.09.2015, 12:11   #4
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Там где-то есть другие разделители?
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 18.09.2015, 12:20   #5
Partall
Новичок
Джуниор
 
Регистрация: 18.09.2015
Сообщений: 5
По умолчанию

а не подскажешь как оптимизировать этот скрипт для более быстрой работы
Partall вне форума Ответить с цитированием
Старый 18.09.2015, 12:26   #6
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

1.Если на процесс не влияют результаты свежезаведённых формул - отключите пересчёт на время работы.
2.Если на процесс не влияет удаление строк - удаляйте все сразу, а не по одной - варианты удаления есть разные, можно обсуждать.
3.Если нужны результаты, а не формулы - вычисляйте всё в коде. Может тогда и строки можно не удалять...

Т.к. нам задача не видна - больше сказать вроде нечего.
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 18.09.2015, 12:40   #7
Partall
Новичок
Джуниор
 
Регистрация: 18.09.2015
Сообщений: 5
По умолчанию

верные результаты появляются в следствии удаления строк

как сразу удалить все строки которые удовлетворяют условию?

если вставить формулу сразу в диапазон ячеек, это ведь должно сократить время выполнения?
Partall вне форума Ответить с цитированием
Старый 18.09.2015, 12:48   #8
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Думаю что если вставить формулу сразу в диапазон ячеек это не сократит время пересчёта, а сократит лишь время вставления этой формулы, т.к. не будет перебора ячеек.
А удалить все строки можно или предварительным созданием диапазона или списка на удаление, или например сортировкой собрать все такие строки в кучку, или скрыть неудаляемые и удалить оставшиеся (но тут есть ограничения при реализации) или может ещё есть какие варианты... Всё зависти от неизвестной задачи.
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 18.09.2015, 13:20   #9
Partall
Новичок
Джуниор
 
Регистрация: 18.09.2015
Сообщений: 5
По умолчанию

задача такова:
дан csv файл в котором имеется информация о движении автомобиля. необходимо найти время начала движения автомобиля и время завершения движения за день в определенном диапазоне дат
Partall вне форума Ответить с цитированием
Старый 18.09.2015, 13:27   #10
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

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

Никаких формул и ячеек (и тормозов), Эксель только как держатель кода (хотя можно обойтись и без него) и как держатель выгруженных результатов (хотя можно обойтись и без него).
webmoney: E265281470651 Z422237915069 R418926282008

Последний раз редактировалось Hugo121; 18.09.2015 в 13:29.
Hugo121 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Запись галочки в ячейку средствами VBA Ivan Dulin Microsoft Office Excel 3 01.04.2012 22:29
Запись формулы со значениями в одну ячейку Freesty1er Microsoft Office Excel 6 30.10.2011 16:28
Получить ячейку из формулы (VBA, Excel 2007) Makso Microsoft Office Excel 6 13.04.2010 15:40
вставка формулы в ячейку (vba) pride Microsoft Office Excel 5 13.07.2009 09:26
Глюк Excel-2007??? Формулы в ячейку из VBA Rafik Microsoft Office Excel 7 24.03.2009 13:59