Страницы: 1
RSS
Отслеживание последней не пустой ячейки в столбце и расчет по формуле, Нужна помощь в написании макроса
 
Как написать макрос для отслеживания последней не пустой ячейки в столбце C и записи значения по некоторой формуле в ту же строку в другой столбец. В формуле учитывается содержание ячейки столбца С.
 
Цитата
2.3. Приложите файл(ы) с примером (общим весом не более 100 Кб) в реальной структуре и форматах данных того, что есть сейчас и того, что хотелось бы на выходе.
   2.4. Не прикладывайте файлы-примеры с персональными данными, конфиденциальной информацией, коммерческой или государственной тайной! Яндекс и Google не спят - проиндексируют ваши данные и привет - они попадут в открытый доступ. И даже удаление темы потом не поможет.

Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori
 
последняя строка
Код
Лист.Cells(Лист.Rows.Count, 3).End(xlUp).Row 

ну далее уже что вам надо...
не нужно оскорблять.
 
JayBhagavan,
да вроде тут и без файла понятно
не нужно оскорблять.
 
По появлению значений в столбцах C,G,I нужно рассчитать значения по формулам (есть в столбцах M,N,O) . Ячейки в столбцах от A до J обновляются от приборов по нарастающей начиная с строки 5 и до нескольких тысяч .
 
Может будет достаточно обработки ошибок формулой
Например для столбцы M - =ЕСЛИОШИБКА(E5*G5*1000;""), (для соседних по аналогии) и растянуть вниз, на нужное кол-во строк.
Согласие есть продукт при полном непротивлении сторон
 
Растягивать и работать мышкой не вариант. Данные в очередной строке появляются автоматически от приборов и я могу только наблюдать за происходящим без вмешательства мышкой
 
Цитата
Sanja написал: и растянуть вниз, на нужное кол-во строк.
например сразу на 1000000. а потом
Цитата
amm_h написал: только наблюдать за происходящим без вмешательства мышкой
Согласие есть продукт при полном непротивлении сторон
 
Но если так уж хочется макрос - пожалуйста
В модуль Листа. Не знаю как у вас данные поступают в Excel. При вводе данных в столбец С вручную срабатывает
Код
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Columns(3)) Is Nothing Then
    lRow = Target.Row
    Cells(lRow, 13).Value = Cells(lRow, 5).Value * Cells(lRow, 7).Value * 1000
    Cells(lRow, 14) = (-0.0039807 + Sqr(0.0039807 ^ 2 - 4 * (-0.00000059048) * (1 - (Cells(lRow, 1).Value / Cells(lRow, 3).Value) * 100 / 100.0299))) / (2 * (-0.00000059048))
    Cells(lRow, 15) = 0.836 * Cells(lRow, 9).Value * 1000 - 0.654
End If
End Sub
Согласие есть продукт при полном непротивлении сторон
 
Кажется это то что нужно. Вручную все работает.  Данные поступают от приборов с интервалом примерно 10 секунд. Проверить окончательно смогу после праздников подключив прибор на работе. Еще у меня вопрос: мне не нужно будет ничего дополнительно запускать? Макрос сработает автоматом при открытии книги?
Спасибо большое Sanja!
 
Ничего больше не надо запускать, НО, нужно знать каким способом у Вас происходит обмен данными Excel c "прибором"
Если не сработает, отпишитесь здесь - поправим
В новом файле добавил некоторые функции (обработка ошибок, обновление экрана, отключение обработки событий)
Согласие есть продукт при полном непротивлении сторон
 
Спасибо большое Sanja! Я даже завтра с утра пойду на работу проверять работу программы с прибором в реальных условиях. А на счет того как происходит обмен данными  с прибором я ничего не могу сказать. Производитель  запаролил макрос который управляет прибором. Результаты сообщу.
 
Sanja не зря спрашивает:
Если это обновление DDE - Worksheet_Change не сработает ((
 
Спасибо всем за помощь и особенно Sanja!  Все работает.
Страницы: 1
Наверх