Excelで生産予定・実績表を作ってみよう

Step 10 予定数を日毎に自動で割り振る


予定数 か 1日の数量 か 開始日 に数量を入力すると、開始日から自動的に1日の数量を割当てていきます。
数量を入力するとすぐに結果を見ることができるので、シミュレーションしながら計画を立てることができます。




Homeに戻る > Excelでアプリケーションソフト > 生産予定・実績表アプリ

シートのVBAコード

下記に変更してください。

Option Explicit

'予定数を日毎に割当て
Private Sub ExSetYotei(tget As Range)
    Dim yoteisu As Long
    Dim daysu As Long
    Dim startday As Long
    Dim lastday As Integer
    Dim i As Integer
    
    '予定数
    yoteisu = tget.Offset(0, -2)
    '1日の数量
    daysu = tget.Offset(0, -1)
    '開始日
    startday = tget
    
    '最終日を取得
    lastday = MonthLastDay(Worksheets("機種マスター").Range("L9"), Worksheets("機種マスター").Range("L10"))
    
    '全日数を空白にする
    For i = 1 To lastday
        tget.Offset(0, i) = ""
    Next
    If yoteisu > 0 And daysu > 0 And startday > 0 Then
        '最終日の前日までの予定数をセットする
        For i = startday To lastday - 1
            If yoteisu - daysu > 0 Then
                tget.Offset(0, i) = daysu
                yoteisu = yoteisu - daysu
            ElseIf yoteisu > 0 Then
                tget.Offset(0, i) = yoteisu
                yoteisu = 0
            Else
                tget.Offset(0, i) = ""
            End If
        Next
        '最終日に余りがあればセット
        If yoteisu > 0 Then
            tget.Offset(0, lastday) = yoteisu
        End If
    End If
End Sub

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
    Dim i As Integer
    Dim rg As Range
    
    For i = -3 To -1
        '予定数 か 1日の数量 か 開始日 のセルが変更されたかチェック
        If Target.Offset(0, i) = "予定" And Target.Offset(1, i) = "実績" Then
            '開始日のセルに指定
            Set rg = Target.Offset(0, i + 3)
            '予定数を日毎に割当て
            ExSetYotei rg
            Exit For
        End If
    Next
End Sub


実行結果の画面

予定数 か 1日の数量 か 開始日 に数値が入力されると、開始日から自動的に割当てていきます。
空白か0の場合は、全日数が空白になります。
開始日から割り当てていき、途中で予定数がゼロになってしまった場合はそこから空白になります。
予定数がはけない場合は、最終日に残りが配分されます。


Homeに戻る > Excelでアプリケーションソフト > 生産予定・実績表アプリ

■■■
このサイトの内容を利用して発生した、いかなる問題にも一切責任は負いませんのでご了承下さい
■■■
当ホームページに掲載されているあらゆる内容の無許可転載・転用を禁止します


Copyright (c) Excel-Excel ! All rights reserved