2

9876:54:32たとえば、 (手動で入力した)値が9876時間、54分、32秒の電話通話時間を表すセルを含むExcel2010ワークブックがあります。

1000次に、たとえば(手動で入力した)値が1000回の呼び出しを表すセルがあります。

値を分割して、1回の通話あたりの平均通話時間を592.615分にします。

通常の=A1/ B1を実行していますが、エラーが発生します。

*編集済み* 私の数学を修正してくれたBrainWebsterに感謝します。私は9.876時間を意味します。しかし、重要なのは、Excelは手動の計算ではなく、エラーを表示するということです。それをいじってみると、Excelは最大値で問題ないことがわかりました9999:59:59。10000:00:00以上で試してみると、時間値として認識されません。

4

4 に答える 4

2

私はこれらの一見簡単ななぞなぞが大好きなので、式と VBA の試みとしての私の解決策を以下に示します。

私のオリジナル:

= (LINKS(A38;FINDEN(":";A38)-1)/24)+ZEITWERT("0"&RECHTS(A38;LÄNGE(A38)-FINDEN(":";A38)+1))

翻訳:

= (LEFT(A38,FIND(":",A38)-1)/24)+TIMEVALUE("0"&RIGHT(A38,LEN(A38)-FIND(":",A38)+1))

これにより、指定された期間の 10k テキストに適切な値が得られます。セルのフォーマットを に設定するだけで済みます[h]:mm:ss。次に、これらの値は同じに見えますが、一方は文字列で、もう一方は数値になります。これが大きな違いです;)

vba でははるかに簡単に見え、一度定義すると、ワークシート関数として使用できます。

Public Function GetDurationValue(ByVal strInput As String) As Double
  Dim arrResult As Variant

  arrResult = Split(strInput, ":") 'saves you parsing
  GetDurationValue = (arrResult(0) / 24) + _
                     TimeSerial(0, arrResult(1), arrResult(2))

End Function


A38 = "10971:12:14"
=GetDurationValue(A38)
=457.13349537037
于 2012-11-01T16:59:31.850 に答える
1

100,000A1の時間を超えず、常に時、分、秒を表示すると仮定すると、この式で十分です

=IFERROR(A1/B1,(LEFT(A1)*10000/24+RIGHT(A1,10))/B1)

結果セルを [h]:mm:ss としてフォーマットし、時間値として結果を取得します

10971:12:14A1 とB1で [または分と秒を取得するように結果セルをフォーマットする]1000の結果を与える必要があります。10:58:16[m]:ss658:16

このバージョンは、任意の時間数で動作し、秒の有無にかかわらず動作します

=IFERROR(A1/B1,(LEFT(A1,FIND(":",A1)-1)/24+RIGHT(A1&IF(COUNTIF(A1,":*:"),"",":00"),5)/60)/B1)

于 2012-11-02T10:37:46.963 に答える
1

時間 > 10000 は Excel では認識されないようです。したがって、これが当てはまるかどうかを確認するために を導入する必要がありIF()、時間 > 10000 の場合の代替式を決定する必要があります。

=IF(ISERROR(FIND(":",A2)),A2/B2, <SCRIPT IN CASE OF >10000>)

<SCRIPT IN CASE OF >10000>次のようになります。

VALUE(LEFT(A2,FIND(":",A2)))/24+VALUE(LEFT(A2,FIND(":",A2, FIND(":",A2))))/(24*60)+VALUE(LEFT(A2,FIND(":",A2, FIND(":",A2,FIND(":",A2)))))*(24*60*60)

組み合わせて楽しむ!

于 2012-11-01T16:10:36.967 に答える
1

LEFT および RIGHT 関数を使用して時間値の一部を取得し、これらの値を合計して 60 [分] (それぞれ 3600 [時間]) を掛けることができます。

時間、分、秒の場合は次のようになります (A1 は時間値のセルです)。

B1=VALUE(LEFT(A1;FIND(":";A1)))*3600
B2=VALUE(LEFT(A1;FIND(":";A1; FIND(":";A1))))*60
B3=VALUE(LEFT(A1;FIND(":";A1; FIND(":";A1; FIND(":";A1)))))

これで、次のように合計できます。

C1=SUM(B1;B2;B3)

次に、通話数で割ります (A2 は通話数のセルです)。

D1=C1/A2

最後に時間のようにフォーマットします:

E1=TEXT(D1/(24*3600);"d \day\s hh:mm:ss")

ところで: Excel 2013 で試してみましたが、セルに 111:22:33 と入力すると、自動的に時間に変換されます。では、お好きなように分けてみてください...

于 2012-11-01T15:42:52.480 に答える