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

Вход

Регистрация

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

 

= Мир MS Excel/Распределение часов по неделям - Мир MS Excel

Старая форма входа
  • Страница 1 из 2
  • 1
  • 2
  • »
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Распределение часов по неделям (Макросы/Sub)
Распределение часов по неделям
Oh_Nick Дата: Суббота, 16.12.2023, 21:44 | Сообщение № 1
Группа: Проверенные
Ранг: Обитатель
Сообщений: 445
Репутация: 8 ±
Замечаний: 20% ±

Excel 2019
Всем привет!
Файл во вложении распределяет часы в колонке B.Мы нажимаем кнопку , вводим кол-во часов, кол-во предметов , и часы итоговой аттестации и он нам выдает кол-во часов по предметам в колонке B. Помогите дополнить код, чтобы получился следующий алгоритм:

Мы берем часы из колонки B и начиная с ячейки I1 распределяем эти часы по неделям по 40 часов. В нашем случае мы взяли две ячейки по 40 и у нас осталось 3 , т.к 83-80 = 3, и далее чтобы получить 40 мы к этим 3 должны прибавить 37. И далее опять берем вправо 40 и так пока все часы из колонки B не закончатся. Приложил пример как должно получатся.

Надеюсь понятно объяснил) спасибо заранее!
К сообщению приложен файл: up_bolvanka.xlsm (26.2 Kb)
 
Ответить
СообщениеВсем привет!
Файл во вложении распределяет часы в колонке B.Мы нажимаем кнопку , вводим кол-во часов, кол-во предметов , и часы итоговой аттестации и он нам выдает кол-во часов по предметам в колонке B. Помогите дополнить код, чтобы получился следующий алгоритм:

Мы берем часы из колонки B и начиная с ячейки I1 распределяем эти часы по неделям по 40 часов. В нашем случае мы взяли две ячейки по 40 и у нас осталось 3 , т.к 83-80 = 3, и далее чтобы получить 40 мы к этим 3 должны прибавить 37. И далее опять берем вправо 40 и так пока все часы из колонки B не закончатся. Приложил пример как должно получатся.

Надеюсь понятно объяснил) спасибо заранее!

Автор - Oh_Nick
Дата добавления - 16.12.2023 в 21:44
Oh_Nick Дата: Вторник, 19.12.2023, 13:03 | Сообщение № 2
Группа: Проверенные
Ранг: Обитатель
Сообщений: 445
Репутация: 8 ±
Замечаний: 20% ±

Excel 2019
Задача выполнена, тема закрыта
 
Ответить
СообщениеЗадача выполнена, тема закрыта

Автор - Oh_Nick
Дата добавления - 19.12.2023 в 13:03
MikeVol Дата: Вторник, 19.12.2023, 14:49 | Сообщение № 3
Группа: Проверенные
Ранг: Обитатель
Сообщений: 315
Репутация: 61 ±
Замечаний: 0% ±

Excel LTSC 2021 EN
Oh_Nick, Доброго времени суток. Для соискателей с похожим вопросом поделитесь вашим решением данной (вашей) задачи. Удачи.


Ученик.
 
Ответить
СообщениеOh_Nick, Доброго времени суток. Для соискателей с похожим вопросом поделитесь вашим решением данной (вашей) задачи. Удачи.

Автор - MikeVol
Дата добавления - 19.12.2023 в 14:49
Oh_Nick Дата: Среда, 20.12.2023, 10:51 | Сообщение № 4
Группа: Проверенные
Ранг: Обитатель
Сообщений: 445
Репутация: 8 ±
Замечаний: 20% ±

Excel 2019
MikeVol, добрый день!)

на самом деле пока встал вопрос, если часов > 40 в колонке B то спотыкается и начинает вычитать числа. Пример прилагаю.

Если часов в колонке B < 40, то считает хорошо...
К сообщению приложен файл: uchebnye_predmety.xlsm (27.6 Kb)


Сообщение отредактировал Oh_Nick - Среда, 20.12.2023, 11:21
 
Ответить
СообщениеMikeVol, добрый день!)

на самом деле пока встал вопрос, если часов > 40 в колонке B то спотыкается и начинает вычитать числа. Пример прилагаю.

Если часов в колонке B < 40, то считает хорошо...

Автор - Oh_Nick
Дата добавления - 20.12.2023 в 10:51
Oh_Nick Дата: Среда, 20.12.2023, 11:18 | Сообщение № 5
Группа: Проверенные
Ранг: Обитатель
Сообщений: 445
Репутация: 8 ±
Замечаний: 20% ±

Excel 2019
Вот , например, для такого кол-ва часов будет такая раскладка (первый скрин), а код выдает вот так (второй скрин)

в сумме то ок, только вот по распределению неверно...
К сообщению приложен файл: 5454406.jpg (20.5 Kb) · 0114257.jpg (21.2 Kb)


Сообщение отредактировал Oh_Nick - Среда, 20.12.2023, 11:20
 
Ответить
СообщениеВот , например, для такого кол-ва часов будет такая раскладка (первый скрин), а код выдает вот так (второй скрин)

в сумме то ок, только вот по распределению неверно...

Автор - Oh_Nick
Дата добавления - 20.12.2023 в 11:18
Oh_Nick Дата: Среда, 20.12.2023, 13:23 | Сообщение № 6
Группа: Проверенные
Ранг: Обитатель
Сообщений: 445
Репутация: 8 ±
Замечаний: 20% ±

Excel 2019
Вот, например, код срабатывает на часы > 40, но по неделям считает больше 40. а должно быть равно.
К сообщению приложен файл: 4682609.jpg (32.9 Kb) · uchebnye_predmety_yg7ayx.xlsm (20.9 Kb)
 
Ответить
СообщениеВот, например, код срабатывает на часы > 40, но по неделям считает больше 40. а должно быть равно.

Автор - Oh_Nick
Дата добавления - 20.12.2023 в 13:23
mgt Дата: Среда, 20.12.2023, 13:53 | Сообщение № 7
Группа: Пользователи
Ранг: Участник
Сообщений: 98
Репутация: 25 ±
Замечаний: 0% ±

Excel 2010
Почему на первом скрине в колонке L в сумме 50?
Я не совсем понял зачем количество предметов и почему на разных скринах разное количество часов в неделю, но если часы беруться из столбца B а норма часов в неделю из столбца C, то попробуйте запустить этот код.
[vba]
Код
Dim i%
Dim ch%, st%, counter%
counter = 9
For i = 1 To Range("a65536").End(xlUp).Row
    ch = Cells(i, 3).Value
    If Range("b" & i).Value < ch Then
        Cells(i, counter - 1).Value = Range("b" & i).Value
    Else
        st = Range("b" & i).Value - Cells(i, counter - 1).Value
        Do While st - ch > 0
            Cells(i, counter).Value = ch
            st = st - ch
            counter = counter + 1
        Loop
        Cells(i, counter).Value = st
        Cells(i + 1, counter).Value = ch - st
        counter = counter + 1
    End If
Next i
[/vba]
К сообщению приложен файл: 5515341.jpg (18.5 Kb)


Сообщение отредактировал mgt - Среда, 20.12.2023, 13:54
 
Ответить
СообщениеПочему на первом скрине в колонке L в сумме 50?
Я не совсем понял зачем количество предметов и почему на разных скринах разное количество часов в неделю, но если часы беруться из столбца B а норма часов в неделю из столбца C, то попробуйте запустить этот код.
[vba]
Код
Dim i%
Dim ch%, st%, counter%
counter = 9
For i = 1 To Range("a65536").End(xlUp).Row
    ch = Cells(i, 3).Value
    If Range("b" & i).Value < ch Then
        Cells(i, counter - 1).Value = Range("b" & i).Value
    Else
        st = Range("b" & i).Value - Cells(i, counter - 1).Value
        Do While st - ch > 0
            Cells(i, counter).Value = ch
            st = st - ch
            counter = counter + 1
        Loop
        Cells(i, counter).Value = st
        Cells(i + 1, counter).Value = ch - st
        counter = counter + 1
    End If
Next i
[/vba]

Автор - mgt
Дата добавления - 20.12.2023 в 13:53
Oh_Nick Дата: Среда, 20.12.2023, 13:55 | Сообщение № 8
Группа: Проверенные
Ранг: Обитатель
Сообщений: 445
Репутация: 8 ±
Замечаний: 20% ±

Excel 2019
mgt, приложите файл, пожалуйста
 
Ответить
Сообщениеmgt, приложите файл, пожалуйста

Автор - Oh_Nick
Дата добавления - 20.12.2023 в 13:55
Oh_Nick Дата: Среда, 20.12.2023, 13:58 | Сообщение № 9
Группа: Проверенные
Ранг: Обитатель
Сообщений: 445
Репутация: 8 ±
Замечаний: 20% ±

Excel 2019
mgt, норма часов не из столбца С. Норма часов всегда одна - 40 часов в неделю, т.е логика макроса должна быть такая:

1) пока я не набью сумму 40 по значениям 1 столбца
2) на 2ой столбец я не перехожу

Набиваем из колонки B. Остальные колонки нас вообще не интересуют. Тут еще важно соблюсти тригер, чтобы в колонке B брал числа до формулы =СУММ в ячейке (там просто итог выводится)


Сообщение отредактировал Oh_Nick - Среда, 20.12.2023, 13:59
 
Ответить
Сообщениеmgt, норма часов не из столбца С. Норма часов всегда одна - 40 часов в неделю, т.е логика макроса должна быть такая:

1) пока я не набью сумму 40 по значениям 1 столбца
2) на 2ой столбец я не перехожу

Набиваем из колонки B. Остальные колонки нас вообще не интересуют. Тут еще важно соблюсти тригер, чтобы в колонке B брал числа до формулы =СУММ в ячейке (там просто итог выводится)

Автор - Oh_Nick
Дата добавления - 20.12.2023 в 13:58
mgt Дата: Среда, 20.12.2023, 14:00 | Сообщение № 10
Группа: Пользователи
Ранг: Участник
Сообщений: 98
Репутация: 25 ±
Замечаний: 0% ±

Excel 2010
ну ок. 40 часов присвоил переменной)
К сообщению приложен файл: 2619259.xlsm (29.4 Kb)
 
Ответить
Сообщениену ок. 40 часов присвоил переменной)

Автор - mgt
Дата добавления - 20.12.2023 в 14:00
mgt Дата: Среда, 20.12.2023, 14:04 | Сообщение № 11
Группа: Пользователи
Ранг: Участник
Сообщений: 98
Репутация: 25 ±
Замечаний: 0% ±

Excel 2010
Макрос берет не до формулы сумм, а до нижней заполненной ячейки в столбце А.


Сообщение отредактировал mgt - Среда, 20.12.2023, 14:04
 
Ответить
СообщениеМакрос берет не до формулы сумм, а до нижней заполненной ячейки в столбце А.

Автор - mgt
Дата добавления - 20.12.2023 в 14:04
Oh_Nick Дата: Среда, 20.12.2023, 14:05 | Сообщение № 12
Группа: Проверенные
Ранг: Обитатель
Сообщений: 445
Репутация: 8 ±
Замечаний: 20% ±

Excel 2019
mgt,

почему-то сумма диапазона I:W (600) не бьется с колонкой B (594)
 
Ответить
Сообщениеmgt,

почему-то сумма диапазона I:W (600) не бьется с колонкой B (594)

Автор - Oh_Nick
Дата добавления - 20.12.2023 в 14:05
mgt Дата: Среда, 20.12.2023, 14:08 | Сообщение № 13
Группа: Пользователи
Ранг: Участник
Сообщений: 98
Репутация: 25 ±
Замечаний: 0% ±

Excel 2010
Ну оно и логично, т.к. 594 на 40 нацело не делится. Остаток 6, он у вас внизу и остался.
 
Ответить
СообщениеНу оно и логично, т.к. 594 на 40 нацело не делится. Остаток 6, он у вас внизу и остался.

Автор - mgt
Дата добавления - 20.12.2023 в 14:08
Oh_Nick Дата: Среда, 20.12.2023, 14:10 | Сообщение № 14
Группа: Проверенные
Ранг: Обитатель
Сообщений: 445
Репутация: 8 ±
Замечаний: 20% ±

Excel 2019
mgt,

Надо до формулы, потому что рабочий файл вот такой:
К сообщению приложен файл: 6806668.jpg (41.1 Kb) · 3434912.xlsm (26.2 Kb)


Сообщение отредактировал Oh_Nick - Среда, 20.12.2023, 14:14
 
Ответить
Сообщениеmgt,

Надо до формулы, потому что рабочий файл вот такой:

Автор - Oh_Nick
Дата добавления - 20.12.2023 в 14:10
Oh_Nick Дата: Среда, 20.12.2023, 14:13 | Сообщение № 15
Группа: Проверенные
Ранг: Обитатель
Сообщений: 445
Репутация: 8 ±
Замечаний: 20% ±

Excel 2019
mgt,

Тогда должно быть вот так, у нас же общая сумма в колонке 594, вот мы ее и распределяем
К сообщению приложен файл: 0554615.jpg (14.9 Kb)
 
Ответить
Сообщениеmgt,

Тогда должно быть вот так, у нас же общая сумма в колонке 594, вот мы ее и распределяем

Автор - Oh_Nick
Дата добавления - 20.12.2023 в 14:13
mgt Дата: Среда, 20.12.2023, 14:57 | Сообщение № 16
Группа: Пользователи
Ранг: Участник
Сообщений: 98
Репутация: 25 ±
Замечаний: 0% ±

Excel 2010
До предпоследней заполненой ячейки в столбце B.
К сообщению приложен файл: 3745761.xlsm (28.8 Kb)
 
Ответить
СообщениеДо предпоследней заполненой ячейки в столбце B.

Автор - mgt
Дата добавления - 20.12.2023 в 14:57
Oh_Nick Дата: Среда, 20.12.2023, 15:09 | Сообщение № 17
Группа: Проверенные
Ранг: Обитатель
Сообщений: 445
Репутация: 8 ±
Замечаний: 20% ±

Excel 2019
mgt,

Вот эти часы вот так вывел...
К сообщению приложен файл: 1331258.jpg (13.3 Kb)
 
Ответить
Сообщениеmgt,

Вот эти часы вот так вывел...

Автор - Oh_Nick
Дата добавления - 20.12.2023 в 15:09
mgt Дата: Среда, 20.12.2023, 16:00 | Сообщение № 18
Группа: Пользователи
Ранг: Участник
Сообщений: 98
Репутация: 25 ±
Замечаний: 0% ±

Excel 2010
Видимо я недоконца понимаю условие. Разбейте как должен выглядеть результат примера на картинке
К сообщению приложен файл: 6459324.jpg (10.2 Kb)
 
Ответить
СообщениеВидимо я недоконца понимаю условие. Разбейте как должен выглядеть результат примера на картинке

Автор - mgt
Дата добавления - 20.12.2023 в 16:00
Oh_Nick Дата: Среда, 20.12.2023, 16:10 | Сообщение № 19
Группа: Проверенные
Ранг: Обитатель
Сообщений: 445
Репутация: 8 ±
Замечаний: 20% ±

Excel 2019
mgt, такая разбивка часов конечно вряд ли будет, потому что часы распределяет равномерно

в нашем случае было бы так (скриншот 1) 150 часов, из них 6 аттестацией. И тогда распределение было бы таким (скриншот 2)

а если, например, как хотите вы, то будет так (скриншот 3) 150 часов, из них 6 аттестацией (например)

почему, например ,не использовать тригер в виде числа 40 где нибудь первой строкой и по нему смотреть?
К сообщению приложен файл: 8875068.jpg (3.7 Kb) · 7175219.jpg (19.3 Kb) · 7613536.jpg (14.3 Kb)


Сообщение отредактировал Oh_Nick - Среда, 20.12.2023, 16:11
 
Ответить
Сообщениеmgt, такая разбивка часов конечно вряд ли будет, потому что часы распределяет равномерно

в нашем случае было бы так (скриншот 1) 150 часов, из них 6 аттестацией. И тогда распределение было бы таким (скриншот 2)

а если, например, как хотите вы, то будет так (скриншот 3) 150 часов, из них 6 аттестацией (например)

почему, например ,не использовать тригер в виде числа 40 где нибудь первой строкой и по нему смотреть?

Автор - Oh_Nick
Дата добавления - 20.12.2023 в 16:10
Oh_Nick Дата: Среда, 20.12.2023, 16:16 | Сообщение № 20
Группа: Проверенные
Ранг: Обитатель
Сообщений: 445
Репутация: 8 ±
Замечаний: 20% ±

Excel 2019
Oh_Nick, а должен был вот так (скриншот)
К сообщению приложен файл: 6861419.jpg (21.1 Kb)
 
Ответить
СообщениеOh_Nick, а должен был вот так (скриншот)

Автор - Oh_Nick
Дата добавления - 20.12.2023 в 16:16
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Распределение часов по неделям (Макросы/Sub)
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:

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