Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Как обнулить ячейку после суммирования - Мир MS Excel

Старая форма входа
  • Страница 1 из 2
  • 1
  • 2
  • »
Модератор форума: китин, _Boroda_  
Как обнулить ячейку после суммирования
Гость Дата: Пятница, 17.02.2012, 22:12 | Сообщение № 1
Группа: Гости
Здравствуйте, подскажите пожалуйста как сделать так, чтобы содержимое, введенное в ячейку просуммировалось с другой ячейкой, после чего она бы обнулилась.

Пример: ввожу в A1 "2" в В1 появляется 2, после чего А1 обнуляется.
далее в А1 "4", в В1 появляет 6, а А1 обнуляется

Помогите, пожааалуйста!
 
Ответить
СообщениеЗдравствуйте, подскажите пожалуйста как сделать так, чтобы содержимое, введенное в ячейку просуммировалось с другой ячейкой, после чего она бы обнулилась.

Пример: ввожу в A1 "2" в В1 появляется 2, после чего А1 обнуляется.
далее в А1 "4", в В1 появляет 6, а А1 обнуляется

Помогите, пожааалуйста!

Автор - Гость
Дата добавления - 17.02.2012 в 22:12
Саня Дата: Пятница, 17.02.2012, 22:20 | Сообщение № 2
Группа: Друзья
Ранг: Ветеран
Сообщений: 1068
Репутация: 560 ±
Замечаний: 0% ±

XL 2016
правой кнопкой мыши по ярлыку листа - "Исходный текст", туда это:
[vba]
Code
Private Sub Worksheet_Change(ByVal Target As Range)
     If Target.Address = Range("A1").Address Then
         Application.EnableEvents = False
         Range("B1") = Range("B1") + Range("A1")
         Range("A1").ClearContents
         Application.EnableEvents = True
     End If
End Sub
[/vba]
 
Ответить
Сообщениеправой кнопкой мыши по ярлыку листа - "Исходный текст", туда это:
[vba]
Code
Private Sub Worksheet_Change(ByVal Target As Range)
     If Target.Address = Range("A1").Address Then
         Application.EnableEvents = False
         Range("B1") = Range("B1") + Range("A1")
         Range("A1").ClearContents
         Application.EnableEvents = True
     End If
End Sub
[/vba]

Автор - Саня
Дата добавления - 17.02.2012 в 22:20
Гость Дата: Пятница, 17.02.2012, 23:04 | Сообщение № 3
Группа: Гости
Саня, спасибо! все работает! biggrin
 
Ответить
СообщениеСаня, спасибо! все работает! biggrin

Автор - Гость
Дата добавления - 17.02.2012 в 23:04
RAN Дата: Пятница, 17.02.2012, 23:14 | Сообщение № 4
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
Эх, Саня, весь кайф обломал!
ps я долго старался... biggrin
К сообщению приложен файл: 5674204.xls (38.5 Kb)


Быть или не быть, вот в чем загвоздка!

Сообщение отредактировал RAN - Пятница, 17.02.2012, 23:19
 
Ответить
СообщениеЭх, Саня, весь кайф обломал!
ps я долго старался... biggrin

Автор - RAN
Дата добавления - 17.02.2012 в 23:14
Гость Дата: Пятница, 17.02.2012, 23:48 | Сообщение № 5
Группа: Гости
RAN, и вам спасибо! Вы все тут такие спецы, а я вот практически блондинка))) Ну ничё, научусь потихоньку.
 
Ответить
СообщениеRAN, и вам спасибо! Вы все тут такие спецы, а я вот практически блондинка))) Ну ничё, научусь потихоньку.

Автор - Гость
Дата добавления - 17.02.2012 в 23:48
light26 Дата: Суббота, 18.02.2012, 15:22 | Сообщение № 6
Группа: Друзья
Ранг: Старожил
Сообщений: 1351
Репутация: 91 ±
Замечаний: 0% ±

2007, 2010, 2013
Блин, дык это же суммирование нарастающим итогом!!!


Я не волшебник. Я только учусь
 
Ответить
СообщениеБлин, дык это же суммирование нарастающим итогом!!!

Автор - light26
Дата добавления - 18.02.2012 в 15:22
light26 Дата: Суббота, 18.02.2012, 15:27 | Сообщение № 7
Группа: Друзья
Ранг: Старожил
Сообщений: 1351
Репутация: 91 ±
Замечаний: 0% ±

2007, 2010, 2013
RAN, рано я обрадовался. Для суммирования нарастающим итогом Ваш пример не подходит.


Я не волшебник. Я только учусь

Сообщение отредактировал light26 - Суббота, 18.02.2012, 15:39
 
Ответить
СообщениеRAN, рано я обрадовался. Для суммирования нарастающим итогом Ваш пример не подходит.

Автор - light26
Дата добавления - 18.02.2012 в 15:27
light26 Дата: Суббота, 18.02.2012, 15:28 | Сообщение № 8
Группа: Друзья
Ранг: Старожил
Сообщений: 1351
Репутация: 91 ±
Замечаний: 0% ±

2007, 2010, 2013
У Александра почти то, что нужно, но:
1. Как изменить код, чтобы условие выполнялось для всех ячеек столбцов А и В? То есть если я буду вводить значение, например, в А5, то в В5 значения будут суммироваться.
2. Значение не должно удаляться после ввода его в ячейки столбца А. Ну тут, вроде, все просто. Код примет такой вид:
[vba]
Code
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = Range("A1").Address Then
Application.EnableEvents = False
Range("B1") = Range("B1") + Range("A1")
Application.EnableEvents = True
End If
End Sub
[/vba]
Правильно?


Я не волшебник. Я только учусь

Сообщение отредактировал light26 - Суббота, 18.02.2012, 15:39
 
Ответить
СообщениеУ Александра почти то, что нужно, но:
1. Как изменить код, чтобы условие выполнялось для всех ячеек столбцов А и В? То есть если я буду вводить значение, например, в А5, то в В5 значения будут суммироваться.
2. Значение не должно удаляться после ввода его в ячейки столбца А. Ну тут, вроде, все просто. Код примет такой вид:
[vba]
Code
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = Range("A1").Address Then
Application.EnableEvents = False
Range("B1") = Range("B1") + Range("A1")
Application.EnableEvents = True
End If
End Sub
[/vba]
Правильно?

Автор - light26
Дата добавления - 18.02.2012 в 15:28
Саня Дата: Суббота, 18.02.2012, 16:02 | Сообщение № 9
Группа: Друзья
Ранг: Ветеран
Сообщений: 1068
Репутация: 560 ±
Замечаний: 0% ±

XL 2016
как же может быть правильно, если там A5 в помине нет...
[vba]
Code
Private Sub Worksheet_Change(ByVal Target As Range)
      With Target ' много Target'ов - выделяем его в конструкцию With
          If .Column = 1 Then ' если произошло изменение в столбце №1, т.е. "A"
              Application.EnableEvents = False ' вырубаем обрабоку событий, ибо след. строка меняет ячейку => вызывает это же событие (если не выключить)
              .Offset(, 1) = .Offset(, 1) + .Value '  .Offset(, 1) - смещение отн-но Target на 0 строк и 1 столбец, т.е. это соседняя справа ячейка
              Application.EnableEvents = True ' включаем ранее выключенное
          End If
      End With
End Sub
[/vba]
 
Ответить
Сообщениекак же может быть правильно, если там A5 в помине нет...
[vba]
Code
Private Sub Worksheet_Change(ByVal Target As Range)
      With Target ' много Target'ов - выделяем его в конструкцию With
          If .Column = 1 Then ' если произошло изменение в столбце №1, т.е. "A"
              Application.EnableEvents = False ' вырубаем обрабоку событий, ибо след. строка меняет ячейку => вызывает это же событие (если не выключить)
              .Offset(, 1) = .Offset(, 1) + .Value '  .Offset(, 1) - смещение отн-но Target на 0 строк и 1 столбец, т.е. это соседняя справа ячейка
              Application.EnableEvents = True ' включаем ранее выключенное
          End If
      End With
End Sub
[/vba]

Автор - Саня
Дата добавления - 18.02.2012 в 16:02
light26 Дата: Суббота, 18.02.2012, 16:34 | Сообщение № 10
Группа: Друзья
Ранг: Старожил
Сообщений: 1351
Репутация: 91 ±
Замечаний: 0% ±

2007, 2010, 2013
Саня, насколько я знаю, target-это цель. То-есть вторая строка кода "поясняет", что целей (в нашем случае ячеек) будет много. Затем задаем "адрес" этого "много": Column = 1. Правильно я понимаю?


Я не волшебник. Я только учусь
 
Ответить
СообщениеСаня, насколько я знаю, target-это цель. То-есть вторая строка кода "поясняет", что целей (в нашем случае ячеек) будет много. Затем задаем "адрес" этого "много": Column = 1. Правильно я понимаю?

Автор - light26
Дата добавления - 18.02.2012 в 16:34
Саня Дата: Суббота, 18.02.2012, 18:16 | Сообщение № 11
Группа: Друзья
Ранг: Ветеран
Сообщений: 1068
Репутация: 560 ±
Замечаний: 0% ±

XL 2016
target - это та ячейка (ячейки), которую(ые) изменили - событие же Worksheet_Change

Quote
много Target'ов

имеется ввиду, что много раз в коде присутствует Target, во так было бы без With
[vba]
Code
Private Sub Worksheet_Change(ByVal Target As Range)
     If Target.Column = 1 Then
         Application.EnableEvents = False
         Target.Offset(, 1) = Target.Offset(, 1) + Target.Value
         Application.EnableEvents = True
     End If
End Sub
[/vba]
 
Ответить
Сообщениеtarget - это та ячейка (ячейки), которую(ые) изменили - событие же Worksheet_Change

Quote
много Target'ов

имеется ввиду, что много раз в коде присутствует Target, во так было бы без With
[vba]
Code
Private Sub Worksheet_Change(ByVal Target As Range)
     If Target.Column = 1 Then
         Application.EnableEvents = False
         Target.Offset(, 1) = Target.Offset(, 1) + Target.Value
         Application.EnableEvents = True
     End If
End Sub
[/vba]

Автор - Саня
Дата добавления - 18.02.2012 в 18:16
RAN Дата: Суббота, 18.02.2012, 20:39 | Сообщение № 12
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
Вадим, мой пример в точности с пожеланиями ТС.
О нарастающем итоге не было ни слова. Файла не было. Зато было скучно... smile
В моем макросе 90% того, что там совсем не нужно, и все мои труды были направлены на то, чтобы это ненужное заставить работать! biggrin booze


Быть или не быть, вот в чем загвоздка!
 
Ответить
СообщениеВадим, мой пример в точности с пожеланиями ТС.
О нарастающем итоге не было ни слова. Файла не было. Зато было скучно... smile
В моем макросе 90% того, что там совсем не нужно, и все мои труды были направлены на то, чтобы это ненужное заставить работать! biggrin booze

Автор - RAN
Дата добавления - 18.02.2012 в 20:39
light26 Дата: Суббота, 18.02.2012, 20:46 | Сообщение № 13
Группа: Друзья
Ранг: Старожил
Сообщений: 1351
Репутация: 91 ±
Замечаний: 0% ±

2007, 2010, 2013
RAN, Да я не с целью хоть как-то твои достоинства преуменьшить. Просто по описанию задача похожа на суммирование нарастающим итогом, а в твоем макросе суммируются только "2" и "4" и только со знаком "+". Кстати, если из А1 значение вообще удалить, VBA начинает ругаться. И, по-моему, матом )


Я не волшебник. Я только учусь
 
Ответить
СообщениеRAN, Да я не с целью хоть как-то твои достоинства преуменьшить. Просто по описанию задача похожа на суммирование нарастающим итогом, а в твоем макросе суммируются только "2" и "4" и только со знаком "+". Кстати, если из А1 значение вообще удалить, VBA начинает ругаться. И, по-моему, матом )

Автор - light26
Дата добавления - 18.02.2012 в 20:46
light26 Дата: Суббота, 18.02.2012, 20:50 | Сообщение № 14
Группа: Друзья
Ранг: Старожил
Сообщений: 1351
Репутация: 91 ±
Замечаний: 0% ±

2007, 2010, 2013
Саня, а если в этом коде
[vba]
Code
Private Sub Worksheet_Change(ByVal Target As Range)
     If Target.Address = Range("A1").Address Then
         Application.EnableEvents = False
         Range("B1") = Range("B1") + Range("A1")
         Range("A1").ClearContents
         Application.EnableEvents = True
     End If
End Sub
[/vba]
А1 и В1 просто заменить на диапазон А:А и В:В, как в формулах?
Я попробовал, макрос работать перестал, но и не ругался


Я не волшебник. Я только учусь
 
Ответить
СообщениеСаня, а если в этом коде
[vba]
Code
Private Sub Worksheet_Change(ByVal Target As Range)
     If Target.Address = Range("A1").Address Then
         Application.EnableEvents = False
         Range("B1") = Range("B1") + Range("A1")
         Range("A1").ClearContents
         Application.EnableEvents = True
     End If
End Sub
[/vba]
А1 и В1 просто заменить на диапазон А:А и В:В, как в формулах?
Я попробовал, макрос работать перестал, но и не ругался

Автор - light26
Дата добавления - 18.02.2012 в 20:50
Саня Дата: Суббота, 18.02.2012, 21:50 | Сообщение № 15
Группа: Друзья
Ранг: Ветеран
Сообщений: 1068
Репутация: 560 ±
Замечаний: 0% ±

XL 2016
Quote (light26)
Саня, а если в этом коде ... А1 и В1 просто заменить на диапазон А:А и В:В, как в формулах?

задал вопрос - сам ответил, молодец.
 
Ответить
Сообщение
Quote (light26)
Саня, а если в этом коде ... А1 и В1 просто заменить на диапазон А:А и В:В, как в формулах?

задал вопрос - сам ответил, молодец.

Автор - Саня
Дата добавления - 18.02.2012 в 21:50
light26 Дата: Суббота, 18.02.2012, 22:06 | Сообщение № 16
Группа: Друзья
Ранг: Старожил
Сообщений: 1351
Репутация: 91 ±
Замечаний: 0% ±

2007, 2010, 2013
Quote (Саня)
задал вопрос

Ну опять не правильно сформулировал.
Я хотел спросить можно ли указать диапазон не номером колонки или строки, а так, как указываем в формулах А:А, В:В...


Я не волшебник. Я только учусь
 
Ответить
Сообщение
Quote (Саня)
задал вопрос

Ну опять не правильно сформулировал.
Я хотел спросить можно ли указать диапазон не номером колонки или строки, а так, как указываем в формулах А:А, В:В...

Автор - light26
Дата добавления - 18.02.2012 в 22:06
light26 Дата: Суббота, 18.02.2012, 22:08 | Сообщение № 17
Группа: Друзья
Ранг: Старожил
Сообщений: 1351
Репутация: 91 ±
Замечаний: 0% ±

2007, 2010, 2013
Quote (Саня)
сам ответил, молодец.

ответил, да не ответил. Обычно VBA начинает ругаться, если в коде ошибка, а тут проглотил и ни разу не возмутился


Я не волшебник. Я только учусь
 
Ответить
Сообщение
Quote (Саня)
сам ответил, молодец.

ответил, да не ответил. Обычно VBA начинает ругаться, если в коде ошибка, а тут проглотил и ни разу не возмутился

Автор - light26
Дата добавления - 18.02.2012 в 22:08
Саня Дата: Суббота, 18.02.2012, 22:17 | Сообщение № 18
Группа: Друзья
Ранг: Ветеран
Сообщений: 1068
Репутация: 560 ±
Замечаний: 0% ±

XL 2016
Quote (light26)
Обычно VBA начинает ругаться, если в коде ошибка, а тут проглотил и ни разу не возмутился

просто там происходит нечто другое, чем изначально предполагалось, но ошибок нет и никто не ругается...

ты бы хоть код написал, который ты попробовал, а то ты словесно описал...
разговор-то пустой получается
 
Ответить
Сообщение
Quote (light26)
Обычно VBA начинает ругаться, если в коде ошибка, а тут проглотил и ни разу не возмутился

просто там происходит нечто другое, чем изначально предполагалось, но ошибок нет и никто не ругается...

ты бы хоть код написал, который ты попробовал, а то ты словесно описал...
разговор-то пустой получается

Автор - Саня
Дата добавления - 18.02.2012 в 22:17
light26 Дата: Суббота, 18.02.2012, 22:21 | Сообщение № 19
Группа: Друзья
Ранг: Старожил
Сообщений: 1351
Репутация: 91 ±
Замечаний: 0% ±

2007, 2010, 2013
Написал - это громко сказано )))
[vba]
Code
Private Sub Worksheet_Change(ByVal Target As Range)
     If Target.Address = Range("A:А").Address Then
         Application.EnableEvents = False
         Range("B:В") = Range("B:В") + Range("A:А")
         Range("A:А").ClearContents
         Application.EnableEvents = True
     End If
End Sub
[/vba]
Вот такую хрень родило мое больное воображение )))


Я не волшебник. Я только учусь
 
Ответить
СообщениеНаписал - это громко сказано )))
[vba]
Code
Private Sub Worksheet_Change(ByVal Target As Range)
     If Target.Address = Range("A:А").Address Then
         Application.EnableEvents = False
         Range("B:В") = Range("B:В") + Range("A:А")
         Range("A:А").ClearContents
         Application.EnableEvents = True
     End If
End Sub
[/vba]
Вот такую хрень родило мое больное воображение )))

Автор - light26
Дата добавления - 18.02.2012 в 22:21
Саня Дата: Суббота, 18.02.2012, 22:54 | Сообщение № 20
Группа: Друзья
Ранг: Ветеран
Сообщений: 1068
Репутация: 560 ±
Замечаний: 0% ±

XL 2016
Quote (light26)
а тут проглотил и ни разу не возмутился


да там на всех ренджах ошибки выдает, попробуй вставить этот код и проверить
а ведь ты даже не проверял ничего, а написал этот "код" прям здесь, на форуме...
 
Ответить
Сообщение
Quote (light26)
а тут проглотил и ни разу не возмутился


да там на всех ренджах ошибки выдает, попробуй вставить этот код и проверить
а ведь ты даже не проверял ничего, а написал этот "код" прям здесь, на форуме...

Автор - Саня
Дата добавления - 18.02.2012 в 22:54
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!