次の方法で共有

時刻表記の「丸め誤差」について

Anonymous
2025-02-24T22:18:16+00:00

セルA1に「0:40」と入力し、セルB1に「=A1=TIMEVALUE("0:40")」とすると「FALSE」が返ります。

時間を1日を1とした小数にして、さらに2進数で扱う以上、無限小数となるのは仕方ないとしても、直接入力の「0:40」とTIMEVALUE("0:40")の「丸め方が違う」のはどのような理由によるものなのでしょうか。

このため、時間範囲を指定したSUMIFS関数やAVERAGEIFS関数において、想定した範囲を拾えないという問題が発生してしまいました。こちらも対処法があるなら教えてください。

Microsoft 365 と Office | Excel | ビジネス向け | Windows

ロックされた質問。 この質問は、Microsoft サポート コミュニティから移行されました。 役に立つかどうかに投票することはできますが、コメントの追加、質問への返信やフォローはできません。

0 件のコメント コメントはありません

9 件の回答

並べ替え方法: 最も役に立つ
  1. Hebikuzure aka Murachi Akira 325.9K 評価のポイント MVP ボランティア モデレーター
    2025-02-25T05:51:02+00:00

    こんな風に 0:40 と TIMEVALUE("0:40") を表示形式で「標準」にしてシリアル値を確認して、差異がどうなっているか確認してみてください。

    手元では上のように差はなく、B1 の捕獲式は TRUE となります。

    ※ Microsoft 365 Apps バージョン 2501

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません
  2. Anonymous
    2025-02-25T04:35:27+00:00

    質問文の通りに入力すると TRUE になりますね。

    どこか入力間違いでも。

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません
  3. motosan 3,230 評価のポイント
    2025-02-25T03:42:08+00:00

    h-engine さま

    私の環境では特に問題なく集計できました。

    Windows11(24H2)

    Microsoft 365 Excel for the web

    数式です。

    =SUMIFS(A1:A3,B1:B3,TIMEVALUE("0:40"))

    Office2019でも同じです。

    何が違うのでしょうね?

    ご参考までに

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません
  4. Anonymous
    2025-02-25T01:37:08+00:00

    ご回答ありがとうございます。

    SUMIFS関数をSUM関数にしてIF関数と組みわせる方法やAVERAGEIFS関数をAVERAGE関数にしてIF関数と組み合わせる方法はあると承知しております。

    代替候補としてはSUMPRODUCT関数も使えるとは思います。

    しかし、私が求めているのはSUMIFS関数、 、AVERAGEIFS関数での解決方法です。

    これらの関数は条件範囲の引数に範囲を指定することはできるのですが、配列を指定できないので、元の表の数値を加工して参照することができません。

    条件範囲の引数は元の表の値のままで、条件値を工夫することになるのではないかと予想します。

    これを解決する、良い方法はないかという質問になります。

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません
  5. Anonymous
    2025-02-25T01:24:26+00:00

    この応答は自動的に翻訳されています。 その結果、文法上の誤りや奇妙な言い回しが生じる可能性があります。

    これを試してみてください。

    =SUM((HOUR(A:A)=0)*(MINUTE(A:A)=40)*B:B)

    これは平均的です

    =平均(IF(((時(A:A)=0)*(分(A:A)=40),B:B,""))

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません