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

Вход

Регистрация

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

 

= Мир MS Excel/Суммирование ячеек и вывод результатов в соседнюю ячейку - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Суммирование ячеек и вывод результатов в соседнюю ячейку (Макросы/Sub)
Суммирование ячеек и вывод результатов в соседнюю ячейку
Garik007 Дата: Понедельник, 29.05.2017, 13:21 | Сообщение № 1
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 102
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013, 2016
Добрый день, нарисовал такой макрос:
[vba]
Код
Sub сумма1()
  If Application.Sum([C7:F7]) > 0 Then
    Range("G7") = Application.Sum([C7:F7])
    Else: Range("G7") = ""
  End If
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim rng As Range
    Set rng = Range("C6:F100")
    If Not Application.Intersect(rng, Range(Target.Address)) Is Nothing Then
        сумма1
    End If
End Sub
[/vba]
Прошу помочь со следующим:
1. Макрос, в данном случае, суммирует значения только 7 строки, а как сделать так, чтобы он суммировал все строчки с 6 по 26, например, т.к. вручную заносить каждую строку довольно долго, и можно ли сделать так, чтобы суммировались строки до определенной ячейки, т.е. если в ячейке G26 имеется фраза "больше не суммировать" или "стоп", то суммируются строки с 6 по 25 включительно.
2. Макрос запускается при изменении в ячейках C6:F26, можно ли сделать так, чтобы он запускался до определенной ячейки, т.е. если в ячейке G26 имеется фраза "больше не суммировать" или "стоп", то при внесении изменений в строчки начиная с 26 макрос не запускался.
К сообщению приложен файл: 2130197.xlsm (15.6 Kb)
 
Ответить
СообщениеДобрый день, нарисовал такой макрос:
[vba]
Код
Sub сумма1()
  If Application.Sum([C7:F7]) > 0 Then
    Range("G7") = Application.Sum([C7:F7])
    Else: Range("G7") = ""
  End If
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim rng As Range
    Set rng = Range("C6:F100")
    If Not Application.Intersect(rng, Range(Target.Address)) Is Nothing Then
        сумма1
    End If
End Sub
[/vba]
Прошу помочь со следующим:
1. Макрос, в данном случае, суммирует значения только 7 строки, а как сделать так, чтобы он суммировал все строчки с 6 по 26, например, т.к. вручную заносить каждую строку довольно долго, и можно ли сделать так, чтобы суммировались строки до определенной ячейки, т.е. если в ячейке G26 имеется фраза "больше не суммировать" или "стоп", то суммируются строки с 6 по 25 включительно.
2. Макрос запускается при изменении в ячейках C6:F26, можно ли сделать так, чтобы он запускался до определенной ячейки, т.е. если в ячейке G26 имеется фраза "больше не суммировать" или "стоп", то при внесении изменений в строчки начиная с 26 макрос не запускался.

Автор - Garik007
Дата добавления - 29.05.2017 в 13:21
sboy Дата: Понедельник, 29.05.2017, 14:19 | Сообщение № 2
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2566
Репутация: 724 ±
Замечаний: 0% ±

Excel 2010
Добрый день.
Немного изменил, только надо добавить обработчик ошибки, если на листе будет отсутствовать
фраза "больше не суммировать"
[vba]
Код
Sub сумма1(ByVal rs)
    For x = 6 To rs
        Range("G" & x) = Application.Sum(Range("C" & x & ":F" & x))
        If Range("G" & x) <= 0 Then Range("G" & x) = ""
    Next x
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim rng As Range
    rs = Range("G:G").Find("больше не суммировать").Row - 1
    Set rng = Range("C6:F" & rs)
    If Not Application.Intersect(rng, Range(Target.Address)) Is Nothing Then
        сумма1 (rs)
    End If
End Sub
[/vba]
К сообщению приложен файл: 5364883.xlsm (15.8 Kb)


Яндекс: 410016850021169
 
Ответить
СообщениеДобрый день.
Немного изменил, только надо добавить обработчик ошибки, если на листе будет отсутствовать
фраза "больше не суммировать"
[vba]
Код
Sub сумма1(ByVal rs)
    For x = 6 To rs
        Range("G" & x) = Application.Sum(Range("C" & x & ":F" & x))
        If Range("G" & x) <= 0 Then Range("G" & x) = ""
    Next x
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim rng As Range
    rs = Range("G:G").Find("больше не суммировать").Row - 1
    Set rng = Range("C6:F" & rs)
    If Not Application.Intersect(rng, Range(Target.Address)) Is Nothing Then
        сумма1 (rs)
    End If
End Sub
[/vba]

Автор - sboy
Дата добавления - 29.05.2017 в 14:19
Garik007 Дата: Понедельник, 29.05.2017, 15:01 | Сообщение № 3
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 102
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013, 2016
sboy, спасибо, буду цеплять к своему файлу, надеюсь размер файла уменьшится после использования этого макроса.
 
Ответить
Сообщениеsboy, спасибо, буду цеплять к своему файлу, надеюсь размер файла уменьшится после использования этого макроса.

Автор - Garik007
Дата добавления - 29.05.2017 в 15:01
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Суммирование ячеек и вывод результатов в соседнюю ячейку (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

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