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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 01.03.2010, 21:26   #1
garry2000
Новичок
Джуниор
 
Регистрация: 01.03.2010
Сообщений: 2
По умолчанию Автоматическое заполнение диапазона ячеек формулой.

Заранее извиняюсь за может быть и глупый вопрос от новичка:
Задача такова:
в диапазон ячеек A1:A(N) импортируются внешние данные, при этом в диапазон ячеек B1:B(N) нужно АВТОМАТИЧЕСКИ (не вручную) вставить заданную функцию, например "=A1*2", "A2*2" и т.д.

(то есть в ячейке B1 должна стоять формула "=A1*2", в ячейке B2 - должна стоять формула "=A2*2", при этом это должно делаться автоматически, а не ручным копированием функции в диапазон ячеек.)

Проблема в том, что количество строк в столбике A:A меняется каждый раз при импортировании новых данных, и Excel не знает, во сколько ячеек столбика B:B нужно вставить эту функцию.
Заранее огромное спасибо всем ответившим!
garry2000 вне форума Ответить с цитированием
Старый 01.03.2010, 22:20   #2
Igor67
Пользователь
 
Регистрация: 09.12.2008
Сообщений: 56
По умолчанию

Как вариант - макросом

Sub Макрос1()

Dim iLastRow As Long
'определяем последнюю заполненую строку
iLastRow = Cells(Rows.Count, "A").End(xlUp).Row

'вставляем формулу в диапазон
Range("B1" & ":B" & iLastRow).FormulaR1C1 = "=RC[-1]*2"
'заменяем формулу на значение
Range("B1" & ":B" & iLastRow).Value = Range("B1" & ":B" & iLastRow).Value

End Sub

Вашу формулу запишите макрорекордером
обычно я на http://planetaexcel.ru/forum.php
Igor67 вне форума Ответить с цитированием
Старый 02.03.2010, 05:36   #3
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Цитата:
нужно АВТОМАТИЧЕСКИ (не вручную) вставить заданную функцию, например "=A1*2", "A2*2" и т.д.
В модуль нужного листа вставьте следующий код:
Код:
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim cell As Range
    If Target.Column <> 1 Then Exit Sub
    For Each cell In Target
        If cell <> "" Then
            cell.Next.Formula = "=" & cell.Address & "*2"
'Если нужны не формулы, а значения, то вместо предыдущей строки используйте следующую
            'cell.Next = cell * 2
        Else: cell.Next = ""
    End If: Next
End Sub
Пример использования см. во вложении.

ПРИМЕЧАНИЕ: Данная процедура запускается автоматически по событию изменения значений ячеек 1-го столбца и обрабатывает только изменившиеся ячейки. К сожалению, Вы не указали каким образом осуществляется импорт данных. Есть разница.
Вложения
Тип файла: rar Книга1.rar (6.1 Кб, 49 просмотров)
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 02.03.2010, 14:19   #4
garry2000
Новичок
Джуниор
 
Регистрация: 01.03.2010
Сообщений: 2
По умолчанию

Igor67 и особенно SAS888, спасибо огромное! Жаль, не могу репутации добавить...
garry2000 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Автоматическое заполнение ячеек разных листов одной книги tissot Microsoft Office Excel 2 26.01.2010 21:24
Автоматическое заполнение. Как? Vitaliy7 Microsoft Office Access 2 25.01.2010 12:29
Автоматическое заполнение строк Пришвин Microsoft Office Excel 32 21.09.2009 18:01
автоматическое заполнение данными ячеек в excel kasanad80 Microsoft Office Excel 7 17.07.2009 15:31
Заполнение диапазона данными массива Сер_Ежик Microsoft Office Excel 4 24.03.2009 16:52