3

指定された日時から現在の時刻を計算したいと思います。

指定されたデータが :19/01/2013 16:44:00
で、時刻が :19/01/2013 16:45:00

その差は 0 年 0 ヶ月 0 日 0 時間 1 分 0 秒

これは、現在の時刻から前の時刻を差し引いてフォーマットするだけで簡単に実行できますが、データを処理するのが難しいため、各日付/時刻セグメントを独自のセルに分割したいと考えています

セル A1 に前回の時刻があり、セル A2 に現在の時刻があるとします。

セル a5 から f5 には、0 年 0 月 0 日 0 時間 1 分 0 秒が含まれます。

この質問に関する2番目の注意事項として、=NOW()対話なしでVBAを介してx秒ごとに強制的に更新することは可能ですか?

4

3 に答える 3

3

関数を使用して年の差を取得することはできませんYEAR。これは、2012 年 12 月 31 日から 2013 年 1 月 1 日の間に 1 日しかない場合に 1 年を与えるためです.....

....同様に、MONTH と DAY で問題が発生する可能性があります (たとえば、MONTH は常に 1 から 12 の間の数値を返しますが、このコンテキストでは 0 から 11 の間の数値のみを期待します)。

ジャスティンが提案するように、DATEDIF最初の 3 つを試してから、HOURMINUTESECOND

A2 の開始日/時刻と B2 の終了日/時刻を想定して、年、月、日、時間、分、および秒に対してそれぞれこれらの式を試してください。

=DATEDIF(A2,B2-(MOD(A2,1)>MOD(B2,1)),"y")

=DATEDIF(A2,B2-(MOD(A2,1)>MOD(B2,1)),"ym")

=DATEDIF(A2,B2-(MOD(A2,1)>MOD(B2,1)),"md")

=HOUR(B2-A2)

=MINUTE(B2-A2)

=SECOND(B2-A2)

すべてのセルを一般的に書式設定する

月/年の長さが変動するため、多少の不一致が生じる場合があります......

于 2013-01-30T18:58:16.263 に答える
1

使用A5 = Year(A1)-Year(A2)

使用する

Year(...) Month(...) Day(...) Hour(...) Minute(...) Second(...)

タイマーに基づく自己更新シートの作成の詳細については、これら2 つの 投稿Worksheet.Calculateを参照し、タイマーを設定してメソッドを実行してください。

于 2013-01-30T17:29:27.593 に答える
0
Private Sub CommandButton1_Click()
    DoDateA
End Sub

Sub DoDateA()
    Dim D1 As Date, D2 As Date, DC As Date, DS As Date
    Dim CA: CA = Array("", "yyyy", "m", "d", "h", "n", "s", "s")
    Dim Va%(7), Da(7) As Date, Ci%
    D1 = Now + Rnd() * 420  ' vary the  * factors for range of dates
    D2 = Now + Rnd() * 156
    If D1 > D2 Then
        [b4] = "Larger"
    Else
        [b4] = " smaller"
        DS = D1
        D1 = D2
        D2 = DS
    End If
    [d4] = D1
    [e4] = D2
    DC = D2
    For Ci = 1 To 6
        Va(Ci) = DateDiff(CA(Ci), DC, D1)
        DC = DateAdd(CA(Ci), Va(Ci), DC)
        Va(Ci + 1) = DateDiff(CA(Ci + 1), DC, D1)
        If Va(Ci + 1) < 0 Then  ' added too much
            Va(Ci) = Va(Ci) - 1
            DC = DateAdd(CA(Ci), -1, DC)
            Cells(9, Ci + 3) = Va(Ci + 1)
            Cells(8, Ci + 3) = Format(DC, "yyyy:mm:dd hh:mm:ss")
        End If
        Da(Ci) = DC
        Cells(5, Ci + 3) = CA(Ci)
        Cells(6, Ci + 3) = Va(Ci)
        Cells(7, Ci + 3) = Format(Da(Ci), "yyyy:mm:dd hh:mm:ss")
        Cells(10, Ci + 3) = DateDiff(CA(Ci), D2, D1)
    Next Ci
End Sub
于 2016-02-07T10:45:53.207 に答える