2017-07-21 1 views
0

指定された予定日時から指定された時間数を引いて日付/時刻を計算する方法を理解しようとしていますそのため、製品コンポーネントのプロセスステップを開始して顧客に出荷するタイミングを完了させる必要がある時を知りました。最後から最初に例えば、製品が9月15日15:00までに顧客に出荷する準備する必要があります指定された日付/時刻から指定された時間数を差し引いて新しい日付/時刻を取得する

、2017

最終組立と検証の手順は、

  • ですステップ15 -
  • ステップ10を完了するために12.6時間を要する -
  • ステップ05を完了するために32.1時間を要する -
を完了するために25.9時間を要します
  • ステップ10は、9月15日に午前2時24分で完了することが必要となる後方

    • ステップ15の作業は

      顧客に出荷するために2017年9月15日に15:00までに完了する必要があるだろう/ 2017時間にステップ15を開始する

    • ステップ05は、時間のステップ10を開始するために、2011年9月13日の06:18で完了する必要があります。
    • すべてのコンポーネントは04:24 2015年9月12日にステップ05を開始します。

    私は、私と私がDateTime関数で何かをしなければならないと思うほど十分に近い例を探していましたが、私はちょうど今何がわかりません

  • +0

    常にシリアルステップであり、あるいはいくつかの実行がparrallelことができますか?常に24時間労働を取るべきです。 '= A1 - (SUM(B1:B3)/ 24)'ここで、A1は出荷日時であり、B1:B3は時刻の所在地です。それは各段階で必要です。各行を実行するように数式を変更することができます。 –

    +0

    @ScottCraner - 場合によっては、いくつかのプロセスを並列に実行することもできます(ただし、マシンの可用性に基づいて製造現場の決定が行われます)。ほとんどの場合、就業日は24時間となりますが、就業日がシフトなどで短くなる可能性のある機会(在庫)があります –

    答えて

    2

    日付からn時間を減算するには、単純にn/24を減算します。 TimeSerial関数を使用して、時、分、秒を減算することもできます。この例では、2つのメソッドを使用して、現在の時刻から1時間半を減算しています。

    Sub substractDates() 
        Dim d1 As Date, d2 As Date, d3 as Date 
        d1 = Now() 
        d2 = d1 - TimeSerial(1, 30, 0) 
        d3 = d1 - 1.5/24 
        Debug.Print d1, d2, d3 
    End Sub 
    

    p.s.さらに3番目の方法は、TimeSerial(1, 30, 0)に相当するTimeValue("1:30:0")を使用することです。

    0

    このマクロでは、設定方法を説明します。ユーザーの入力を使用するか、リストから時間を取るようにさらに処理できます。

    Sub test() 
    Dim dtmstart As Date 
    Dim steps(2) As Double 
    Dim duration, hours As Double 
    dtmstart = "2017/9/15 15:00" 
    steps(0) = 12.6 
    steps(1) = 32.1 
    steps(2) = 25.9 
    
    MsgBox "Last step will need to be completed by: " & dtmstart 
    For Each c In steps 
    'convert hours to days 
    hours = c/24 
    duration = dtmstart - hours 
    dtmstart = Application.Text(duration, "yyyy-mm-dd hh:mm") 
    MsgBox dtmstart 
    Next c 
    End Sub 
    
    0

    DateAddメソッドは、Dateオブジェクトに追加または削除するために使用されます。最初のパラメータはインターバルタイプです。以下のコードでは、「h」は時間であり、「n」は分である。逆方向に作業するには、時間と分を負の値として入力します。

    Dim dtShipTime As Date 
    Dim dtStep15Start As Date 
    Dim dtStep10Start As Date 
    Dim dtStep05Start As Date 
    
    dtShipTime = #9/15/2017 3:00:00 PM# 
    
    dtStep15Start = DateAdd("h", -12, dtShipTime) 
    dtStep15Start = DateAdd("n", -36, dtStep15Start) 
    
    dtStep10Start = DateAdd("h", -32, dtStep15Start) 
    dtStep10Start = DateAdd("n", -6, dtStep10Start) 
    
    dtStep05Start = DateAdd("h", -25, dtStep10Start) 
    dtStep05Start = DateAdd("n", -54, dtStep05Start) 
    

    リファレンス http://www.chennaiiq.com/developers/reference/visual_basic/functions/dateadd.asp

    関連する問題