1

HOUR値を比較する 2 つの列に適用される条件付き書式設定式を作成しようとしています。例として、スプレッドシートの 3 つの行を以下に示します (実際のスプレッドシートへのリンクはこちらです)。

   |     A     |     B    |    C    |   D    |
1  |   14:00   |   02:00  |  12:00  |  12:00 | 
2  |   15:30   |   16:30  |  01:00  |  01:00 |
3  |   08:30   |   09:30  |  01:00  |  01:00 |

ステップ 1: C列は B - A の減算の結果です。時間の値 (日付と時間でも日付でもなく、時間のみ) を使用しているため、C 列で使用する数式があります。

      =(B1-A1) + IF(B1 < A1; 1)

この式は基本的に B - A を計算し、B が A よりも「小さい」場合 (実際には翌日からの期間)、 を追加します1。そうでない場合、私の結果は負の時間数になります。(詳細はこちら)

ステップ 2: D列は挿入された値 (式の結果ではない) であり、列全体の形式は (時間) です。

ステップ 3: C列の値をD列の値と比較する条件付き書式設定ルールを作成しました。それらが異なる場合、C列のセルは緑色に塗られるはずです。

=C1<>D1 on the interval C1:C1000

ステップの問題:

C1セルは、その値がD1と同じであるため(両方とも12:00)、ペイントされません。C2も、その値が D2 と同じであるため、ペイントされません
(両方とも です)。 C3 は、その値 ( ) がD3 ( ) と同じであってもペイントされます。01:00
01:0001:00

そして、その動作はスプレッドシート上で明らかにランダムに繰り返されます。

私はそれについて多くのことを調査し、Excel でテストしたところ、魅力的に機能することがわかりました。しかし、Google スプレッドシートでは、この奇妙な動作が発生します。

4

2 に答える 2

2

非常に紛らわしいですが、幸いなことに修正は非常に簡単です(私はそう思います!)。してみてください:

=round(D1;14)<>round(C1;14)

の代わりに=D1<>C1

于 2015-03-12T05:35:11.853 に答える
1

表示されている動作は、Google スプレッドシートの浮動小数点エラーの処理の結果です (この点で、これらのエラーをより頻繁にマスクするため、Excel の方が優れていると主張できます)。

列 C と D の形式を Number に変更し、表示される小数点以下の桁数を (.00->ボタンを使用して) 約 16 に増やすと、何が起こっているかを確認できます。

回避策は、計算されたデータに対して何らかの丸めを実行することですが、これは言うは易く行うは難しです。列 D に分全体を含む時間のみが含まれている場合は、次を使用できます。

=ROUND((B1-A1+IF(B1<A1;1))*1440)/1440

ちなみに、これは次のように短縮できます

=ROUND(MOD(B1-A1;1)*1440)/1440

于 2015-03-12T05:35:50.267 に答える