Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Страницы: 1
RSS
Автоматическая рассылка данных с условием
 
Доброго времени суток!
Извините меня за прямоту пожалуйста. Я любитель Exel, и часто составляю разные таблицы с формулами, списками и прочим. Но вот столкнулся с задачей, придумать решение для которой с помощью стандартных функций у меня не получается.

Помогите пожалуйста решить задачу для ускорения рабочего процесса. Необходимо реализовать следующее.
Имеем 3 поля для ввода данных. А1;B1;C1
1. В ячейку А1 вводим номер диапазона, состоящего их 2 колонок, который находится на другом листе книги. Там таких много одинаковых.
2. В ячейку В1 вводим число
3. В ячейку С1 вводим текст
4. Нажимаем кнопку, и число из ячейки В1 копируется на первую свободную строку первой колонки диапазона с номером А1, а текст из С1 копируется во вторую колонку диапазона А1.
5. Стираем данные другой кнопкой
6. Вводим другой номер диапазона в ячейку А1
7. Вводим новое число в ячейку В1
8. Вводим новый текст в ячейку С1
8. Нажимаем кнопку.
9. данные разносятся по нужным колонкам другого диапазона .

Смысл - не скакать по таблицам, а вводить все на автомате, куда нужно.
Кнопку удаления данных сделал, сделал так, что все нужные данные разлетаются по нужным столбцам тоже через кнопку ( они копируются в одну и туже ячейку нужного столбца) но вот как сделать запись чисел в свободные ячейки в этом самом столбце!? и чтоб все они сохранялись в столбик? Отформатировать и организовать саму таблицу тоже смогу. Только вот в макросах не селен пока. Но очень хочу научиться. А может есть формула хитрая какая?

По сути надо заставить сохранять в столбик всю историю обновлений одной ячейки.

Помогите пожалуйста!
 
Нашел макрос, который записывает в строчку изменения ячейки, но только с клавиатуры. После обновления "удаленно" через ссылку или формулу не работает.
Только если результат преобразовать в значение, удалив формулы
Можно переделать, чтоб в столбик было, и чтобы формулы понимал?
Код
Private Sub Worksheet_Change(ByVal Target As Range)
Dim r As Range
Set r = Target.Offset(0, 1)
Application.EnableEvents = False
If IsEmpty(r.Value) Or (r.Value = "";) Then
 r.Value = Target.Value
 Else
  Target.End(xlToRight).Offset(0, 1).Value = Target.Value
End If
Application.EnableEvents = True 
End Sub
 
Цитата
AlehinAlSerg написал: По сути надо заставить сохранять в столбик всю историю обновлений одной ячейки.
Посетите раздел "Приемы".
А чтобы реагировало на формулы, используйте событие Worksheet_Calculate
 
Юрий М, Спасибо, буду разбираться.
 
Юрий М, могу я вас попросить расшифровать для меня код, который я привел в пред. сообщении? Т.е. какую именно процедуру выполняет та или иная команда или строка в макросе?

Понятно, что вместо Worksheet_Change надо подставлять Worksheet_Calculate. и обращаются они к данным по-разному
 
Код
Private Sub Worksheet_Change(ByVal Target As Range)
Dim r As Range 'Объявили переменную типа диапазон
    Set r = Target.Offset(0, 1) 'Установили этот диапазон - ячейка, смещенная на одну вправо от контролиреумой
    Application.EnableEvents = False 'Отключили отслеживание событий
    If IsEmpty(r.Value) Or (r.Value = "") Then 'Если наш диапазон пуст или равен "" то
        r.Value = Target.Value 'наш диапазон (ячейка) равна изменяемой ячейке
    Else 'Иначе
        Target.End(xlToRight).Offset(0, 1).Value = Target.Value 'Первая свободная ячейка справа равна изменяемой
    End If 'Конец проверки
    Application.EnableEvents = True 'Включчили отслеживание событий
End Sub

 
Внес поправки как сумел, первую ячейку заполняет как надо, а потом ошибка.




Private Sub Worksheet_Change(ByVal Target As Range)
Dim r As Range 'Объявили переменную типа диапазон
   Set r = Target.Offset(1, 0) 'Установили этот диапазон - ячейка, смещенная на одну вниз от контролиреумой
   Application.EnableEvents = False 'Отключили отслеживание событий
   If IsEmpty(r.Value) Or (r.Value = "") Then 'Если наш диапазон пуст или равен "" то
       r.Value = Target.Value 'наш диапазон (ячейка) равна изменяемой ячейке
   Else 'Иначе
       Target.End(y1toDown).Offset(1, 0).Value = Target.Value 'Первая свободная ячейка внизу равна изменяемой
   End If 'Конец проверки
   Application.EnableEvents = True 'Включили отслеживание событий
End Sub


Подскажите, как правильно написать?
 
1. Не нужно раскрашивать код вручную - его следует оформлять тегом.
2. Что Вы хотите получить?
 
Извините, я не частый гость форумов, не знал как правильно оформлять.

Я хочу получить Макрос, который будет работать.  Получится  очень удобная таблица с автозаполнением!,  
 
Цитата
AlehinAlSerg написал:
Извините, я не частый гость форумов, не знал как правильно оформлять.
Так же, как и в #2
Страницы: 1
Читают тему (гостей: 1)