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

Вход

Регистрация

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

 

= Мир MS Excel/умножение =сумм() на значения из диапазона по условию - Мир MS Excel

Регистрация · Логин: · Пароль: · · Забыли пароль?
  • Страница 1 из 1
  • 1
Модератор форума: _Boroda_, Manyasha, SLAVICK, китин  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » умножение =сумм() на значения из диапазона по условию (Макросы/Sub)
умножение =сумм() на значения из диапазона по условию
dittor Дата: Суббота, 21.09.2019, 00:19 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 6
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Здравствуйте!
Помогите с написанием макроса.

Задача состоит в том, чтобы высчитывать зарплату бригады работников с умножением на надбавки за профессию исходя из участвующих работников. Столбцы: A - постоянен, B,C - изменяемые значения, D - формулы и вывод значений макроса. Ячейка B9 - вывод итогового значения работы макроса. Часть макроса я написал, то что не сложно. А вот с перемножением по выбору не получается.

Заранее спасибо за помощь
К сообщению приложен файл: _01.xlsm(16.0 Kb)


Сообщение отредактировал dittor - Суббота, 21.09.2019, 00:21
 
Ответить
СообщениеЗдравствуйте!
Помогите с написанием макроса.

Задача состоит в том, чтобы высчитывать зарплату бригады работников с умножением на надбавки за профессию исходя из участвующих работников. Столбцы: A - постоянен, B,C - изменяемые значения, D - формулы и вывод значений макроса. Ячейка B9 - вывод итогового значения работы макроса. Часть макроса я написал, то что не сложно. А вот с перемножением по выбору не получается.

Заранее спасибо за помощь

Автор - dittor
Дата добавления - 21.09.2019 в 00:19
Kuzmich Дата: Суббота, 21.09.2019, 19:36 | Сообщение № 2
Группа: Проверенные
Ранг: Обитатель
Сообщений: 397
Репутация: 76 ±
Замечаний: 0% ±

Excel 2003
Может так
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("C2:C8")) Is Nothing Then
        Application.EnableEvents = False
      Dim S As Double
      Dim i As Integer
        S = WorksheetFunction.Sum(Range("D2:D4"))
        For i = 6 To 8
          If Cells(i, "C") = "да" Then
            S = S * Cells(i, "B")
          End If
        Next
          Range("B9") = S
    End If
    Application.EnableEvents = True
End Sub
[/vba]
 
Ответить
СообщениеМожет так
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("C2:C8")) Is Nothing Then
        Application.EnableEvents = False
      Dim S As Double
      Dim i As Integer
        S = WorksheetFunction.Sum(Range("D2:D4"))
        For i = 6 To 8
          If Cells(i, "C") = "да" Then
            S = S * Cells(i, "B")
          End If
        Next
          Range("B9") = S
    End If
    Application.EnableEvents = True
End Sub
[/vba]

Автор - Kuzmich
Дата добавления - 21.09.2019 в 19:36
dittor Дата: Суббота, 21.09.2019, 21:48 | Сообщение № 3
Группа: Пользователи
Ранг: Прохожий
Сообщений: 6
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Не совсем так.
При интеграции Вашего кода выскакивает окно записи кода, либо различные ошибки по операторам. Да и вообще эксель пару раз рухнул.
Но спасибо, так как направили в нужное русло. С интеграцией разобрался в итоге получилось так

[vba]
Код
Dim i As Integer
S = WorksheetFunction.Sum(Range("D2:D4"))
For i = 6 To 8
If Cells(i, "C") = "да" Then
S = S * Cells(i, "B")
End If
Next
Range("B9") = S
[/vba]
Вставил это в свой макрос после своего кода и все заработало
Но остался вопрос - А что делает все то что я удалил?


Сообщение отредактировал dittor - Суббота, 21.09.2019, 22:46
 
Ответить
СообщениеНе совсем так.
При интеграции Вашего кода выскакивает окно записи кода, либо различные ошибки по операторам. Да и вообще эксель пару раз рухнул.
Но спасибо, так как направили в нужное русло. С интеграцией разобрался в итоге получилось так

[vba]
Код
Dim i As Integer
S = WorksheetFunction.Sum(Range("D2:D4"))
For i = 6 To 8
If Cells(i, "C") = "да" Then
S = S * Cells(i, "B")
End If
Next
Range("B9") = S
[/vba]
Вставил это в свой макрос после своего кода и все заработало
Но остался вопрос - А что делает все то что я удалил?

Автор - dittor
Дата добавления - 21.09.2019 в 21:48
Kuzmich Дата: Суббота, 21.09.2019, 21:56 | Сообщение № 4
Группа: Проверенные
Ранг: Обитатель
Сообщений: 397
Репутация: 76 ±
Замечаний: 0% ±

Excel 2003
Цитата
что делает все то что я удалил?

Макрос автоматически срабатывает на изменение значений в ячейках C2:C8
 
Ответить
Сообщение
Цитата
что делает все то что я удалил?

Макрос автоматически срабатывает на изменение значений в ячейках C2:C8

Автор - Kuzmich
Дата добавления - 21.09.2019 в 21:56
Pelena Дата: Суббота, 21.09.2019, 22:12 | Сообщение № 5
Группа: Админы
Ранг: Местный житель
Сообщений: 14579
Репутация: 3192 ±
Замечаний: ±

Excel 2010, 2016 & Mac Excel
dittor, оформите код тегами с помощью кнопки # в режиме правки поста


"Черт возьми, Холмс! Но как??!!"
ЯД 41001765434816
 
Ответить
Сообщениеdittor, оформите код тегами с помощью кнопки # в режиме правки поста

Автор - Pelena
Дата добавления - 21.09.2019 в 22:12
dittor Дата: Суббота, 21.09.2019, 22:47 | Сообщение № 6
Группа: Пользователи
Ранг: Прохожий
Сообщений: 6
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
dittor, оформите код тегами с помощью кнопки # в режиме правки поста

исправил
 
Ответить
Сообщение
dittor, оформите код тегами с помощью кнопки # в режиме правки поста

исправил

Автор - dittor
Дата добавления - 21.09.2019 в 22:47
dittor Дата: Суббота, 21.09.2019, 22:55 | Сообщение № 7
Группа: Пользователи
Ранг: Прохожий
Сообщений: 6
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Макрос автоматически срабатывает на изменение значений в ячейках C2:C8

Теперь понятны выскакивающие ошибки.
 
Ответить
Сообщение
Макрос автоматически срабатывает на изменение значений в ячейках C2:C8

Теперь понятны выскакивающие ошибки.

Автор - dittor
Дата добавления - 21.09.2019 в 22:55
dittor Дата: Вторник, 24.09.2019, 21:29 | Сообщение № 8
Группа: Пользователи
Ранг: Прохожий
Сообщений: 6
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Помогите еще. А как сделать чтоб сумма не перемножалась на все значения ячеек диапазона, а лишь на одно, наибольшее значение из диапазона 6-8 столбца "B", при се том же условии диапазона 6-8 столбца "C"


Сообщение отредактировал dittor - Вторник, 24.09.2019, 21:32
 
Ответить
СообщениеПомогите еще. А как сделать чтоб сумма не перемножалась на все значения ячеек диапазона, а лишь на одно, наибольшее значение из диапазона 6-8 столбца "B", при се том же условии диапазона 6-8 столбца "C"

Автор - dittor
Дата добавления - 24.09.2019 в 21:29
dittor Дата: Четверг, 26.09.2019, 20:20 | Сообщение № 9
Группа: Пользователи
Ранг: Прохожий
Сообщений: 6
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Снимаю вопрос. Дошел сам. Всем спасибо
 
Ответить
СообщениеСнимаю вопрос. Дошел сам. Всем спасибо

Автор - dittor
Дата добавления - 26.09.2019 в 20:20
Мир MS Excel » Вопросы и решения » Вопросы по VBA » умножение =сумм() на значения из диапазона по условию (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

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