web-dev-qa-db-ja.com

期間を日数、時間数、分数でフォーマットします

これは純粋にExcelシートの質問です。

基本的に、それぞれに日付を含む2つのセルの差である期間があります。

数値の形式を[h]:mmに変更することで、時間と分で時差を取得できました。ここで、日数、時間数、分数の違いを取得したいと思います。数値形式を[d]:[h]:[mm]に設定しようとしましたが、Excelでは受け入れられません。

私が今持っているものは次のとおりです。

    A                   B                   C (=A2-A1)
    ----------------    ----------------    ----------
1|  14/10/2011 00:00    17/10/2011 07:50    79:50
2|  14/10/2011 00:00    17/10/2011 11:00    83:00

ここに私が欲しいものがあります:

    A                   B                   C (=A2-A1)
    ----------------    ----------------    ----------
1|  14/10/2011 00:00    17/10/2011 07:50    3:7:50
2|  14/10/2011 00:00    17/10/2011 11:00    3:11:00

どうやってやるの?そのために利用できる数値形式はありますか?

18
Otiel

TEXTを使用できます
= TEXT(B1-A1,"d:h:mm")

セルに単純な数値形式を直接使用すると、同じ効果が得られることに注意してください

  • 範囲を選択します(セル_C1, C2_など)
  • 右クリックしてセルのフォーマット
  • カスタム
  • タイプ_d:hh:mm_

サンプルデータとは異なり、日付の差が31日を超える場合は、=INT(B1-A1)&":"&TEXT(B1-A1,"h:mm")などのアプローチ
働くでしょう

27
brettdj

警告:上記は31日未満の範囲でのみ機能します。使用する

=CONCATENATE(TEXT(FLOOR(B1-A1,1),"@")," Days",TEXT(B1-A1," h:mm:ss"))

代わりに、31日を超える範囲の場合。これはうまくソートされないため、1つの列で計算を実行し、その列で最終結果を確認する方が良いでしょう。

7
Bill Barry

残念ながら、数値と日時の形式を組み合わせることはできません。

0:h:m

チケットになります。ただし、32日間以上のスパンの場合、次のようなカスタム形式を使用できる(端数)日数を表示するだけで十分です。

[>=32] 0.00 "days"; d:h:m

セルの値は数値のままです。

2
Gary

以下は確かに最短の式ではなく、質問に対する直接的な答えではありませんが、正しい結果(LibreOfficeでも)を次の形式で表示するように機能します。

#日##時間##分##秒

=CONCATENATE(TEXT(FLOOR(B2-A2,1),"@")," days ", IF(HOUR(A12)-HOUR(A11)<0,HOUR(A12)-HOUR(A11)+24,HOUR(A12)-HOUR(A11))," hours ",IF(MINUTE(A12)-MINUTE(A11)<0,MINUTE(A12)-MINUTE(A11)+60,MINUTE(A12)-MINUTE(A11)), " minutes ", TEXT(B2-A2,"s"), " seconds")
1
inetpro

開始日がセルC2にあり、終了日がセルD2にあると仮定すると、次のアプローチも機能します。

 =TEXT((D2-C2)-MOD(D2-C2,1),"0") & " days " & TEXT(MOD(D2-C2,1),"hh:mm")
0
TimZ

=IFERROR(INT(Date1-Date2)&" Days "&INT(MOD((Date1-Date2);INT(Datw1-Date2))*24)&" Hours "&MINUTE(Fate1-Date)&" Min";IFERROR((Date1-Date2);"NA"))enter code here

私はあなたが持っている日付に関係なく、これはトリックを行うべきだと思います。