A1とB1に 「0:30」が入っています。それぞれ別の集計方法で出た数字です。
しかし、A1=B1 で Falseという結果が出ました。
シリアル値を確認すると以下のように相違するのが確認できました。
A1:0.0208333333333333
B1:0.0208333333333334
末尾の3と4の違いは何でしょうか?
また時刻形式などシリアル値を理解してない人にも伝わる形で、同一でないことを示せる表示形式などないでしょうか?
例えば、秒の桁数を増やすとか。
同一時刻であることをTRUEにてチェックしたいのにFALSEが出ると困るので、TRUEになるための関数などでの加工はできないでしょうか?
Excelでなく手動で計算するといずれも「0時間30分」なので結論は同一ですが、
Excelの都合上、相違してしまっているのは分かりますが、実際の時間計算上狂わさせずに同一にまるめたいです。
A 回答 (12件中1~10件)
- 最新から表示
- 回答順に表示
No.12
- 回答日時:
> 日付にも時間にも桁区切り数値にも表示させられるし、
> 計算にも使用できてるのに文字列にしている、、、分かりづらいですね。
それはtext関数とは別に、Excelが数字の並んだ文字列を勝手に数値に変換する場合としない場合があるわけです。sum関数やsumproduct関数やaverage関数は変換せず無視するけど、max関数やmround関数は勝手に数値に変換します。text関数の結果が数値じゃないのはisnumber関数で確認すればちゃんとFALSEになるので明確です。
No.11
- 回答日時:
》 A1とB1に 「0:30」が入っています
》 末尾の3と4の違いは何でしょうか?
A1とB1は誰が入力しましたか?
貴方がそうなら、A1とB1の入力の違いは何でしょうか?
No.10
- 回答日時:
microsoftのページから引用します。
The TEXT function lets you change the way a number appears by applying formatting to it with format codes.
書式を設定して表示を変更する。
文字列の定義が#9とは違うようです。
文字列どうしの足し算はできますか?
='1+'1
これはエラーですが
=TEXT(1,"#")+TEXT(1,"#")
は2です。これに1を足せば(=TEXT(1,"#")+TEXT(1,"#")+1)、3になります。text関数の結果が文字列だというならこれらはエラーになるべきですがなりません。text関数の結果は数値です。
ただtext関数で変換してしまうとわけがわからなくなることがあるので、text関数の結果で計算するのは避けた方がいい(避けるべき)です。
たとえば1.236をtext(1.236,"#.##")とすると表示は1.24になります。これは文字列ではなく数値ですからこれに0.1を足すと1.34になります。表示されなかった桁は消えてしまいます。roundと同じです。
ということでtext関数の結果は文字列ではありません。
ありがとうございます。
計算のできる値にはできるけど、
厳密には「丸められてはいない」(見た目の表示に騙されてはいけない)
という事ですね。
No.9
- 回答日時:
xs200さんのNo.8の回答は間違ってるので読まなくていいです。
text関数の結果は「文字列」です。表示形式を適用して文字列を生成してますから、計算上の微小な誤差は表現されず消えてしまいます。ちゃんと桁の揃った文字列になってれば比較は可能ですよ。mround関数との違いは、数値として比較しているか文字列で比較するかですから、mroundの方がマジメっぽいですね。
text関数を調べると、確かに「テキストに変換する関数」とあります。
しかし、日付にも時間にも桁区切り数値にも表示させられるし、計算にも使用できてるのに文字列にしている、、、分かりづらいですね。
mroundじゃないといけない説明があると区別できる気がするのですが。。。
No.8
- 回答日時:
まだ締まってなかったので回答続き。
text関数は文字列を返す関数ではありません。表示形式を指定する関数ですから数値をtext関数に入れて時間表示にしても中身は数値のままです。12345をtext関数で"#,#"にすれば12,345という表示になった数値です。文字列ではありません。
No.6の繰り返しですが
a1に0:0:6, a2に0:0:5, a3に0:0:1
をいれてb1から順にtext(a1,"hh:mm:ss")とします。
=b1-b2-b3=0
とすればFALSEになります。text関数を使っても結果は同じことです。丸めるしかなく
=round(b1-b2-b3,5)=0
にすればTRUEです。
日付であれば整数ですから
2024/9/1をtext関数でyy/mm/ddにして計算しても正しい結果になります。
2024/9/1 =text(a1,"yy/mm/dd")
2024/9/2 =text(a2,"yy/mm/dd")
=b2-b1=1
はTRUEです。
等しいか判断するには数値を丸めて比較するしかありません。
No.7
- 回答日時:
なにしろExcelの数値は15桁しか有効桁数がないので、10分が0.00694444444444444444……と無限に続くはずが15桁に丸められてしまって0.00694444444444444しかありません。
で、20分ならどうなるかというと、0.013888888888888888……と無限に続くはずがやっぱり丸められてしまって0.0138888888888889になるわけです。こういう誤差が微妙に蓄積したり打ち消しあったりした結果が質問の誤差ですね。仕方がないので、たとえば1秒単位で丸めるなどしましょう。
=mround(元々の集計の数式, "0:00:01")
これで同じになるはずです。
ありがとうございます。
セルの見た目が両方とも「0:30」であったとしても、
その結果になる経緯が、どういう足し引きが行われてたかによって、
・・・3333000
・・・3334000
になり得るって事ですね。
皆さんから教えて頂いた、丸める関数がmroundですが、
text関数でも良いんじゃないかと思い、違いがはっきり分かりません。
text関数は文字列だと仰りますが、"hh:mm:ss"の結果は、計算に使えるのでmroundじゃないといけない理由が未だ不明です。。。
No.6
- 回答日時:
>1.2-1.1-0.1=-1.38778E-16
が理解できません。
Exceで=1.2-1.1-0.1と入れればわかることです。0にはなりません。
ほかにも=4.8-4.7-0.1は-3.60822E-16になります。0にはなりません。
シリアル値の方がわけわからないと思いますが、たとえば
a1に0:0:6, a2に0:0:5, a3に0:0:1
をいれてa4に
=a1-a2-a3=0
とすればFALSEになります。6秒-5秒-1秒=0秒ではありません。
・余分な桁は捨てる
・誤差として影響のない数の差は無視する
に
・すべて整数で計算する
を加えておきます。
6-5-1なら必ず0です。秒未満がなければすべて整数で計算できます。
やればわかることなので理解できないではなくやってみてください。
Excelのバージョンは
Microsoft® Excel® 2021 MSO (バージョン 2408 ビルド 16.0.17928.20114) 64 ビット
でやってます。バージョンにより差があると思います。
ありがとうございます。
実際にExcelで、
=1.2-1.1-0.1 を試してみて分かりました。
不思議ですね。
「1.2-1.1」の結果は「1.0」ですが所数のけたを増やしていくと
「0.999999999999」になりました。
Excelの問題でしょうか?
1.2-1.1-0.1=0 にならない理由って説明可能なのでしょうか?
シリアル値は1900/01/01を基準としているって事で何となく分かった気ではいます。
No.5
- 回答日時:
桁数は有限なので誤差が出る前提で計算しないといけません。
丸めてない数のイコール計算なんてこわくてできません。・余分な桁は捨てる
・誤差として影響のない数の差は無視する
たとえば
=1.2-1.1=0.1
これはFALSEです。1.2-1.1=0.1ではありません。
1.2-1.1-0.1=-1.38778E-16
これを説明すればシリアル値を理解していない人にも誤差がでるのは理解してもらえるのでは?
この例ではroundを使うか、1.2と比べて計算に影響のない0.01と比較するabs(1.2-1.1-0.1)<0.01とでもすればTRUEになります。
すみません
1.2-1.1-0.1=-1.38778E-16
が理解できません。
シリアル値の方が分かりやすいと思ってしまうのですが、
何か気づかせてくれると嬉しいです。
No.4
- 回答日時:
> MROUND(A1,"0:0:1") → TEXT(A1,"hh:mm:ss") でも良いかなと思いました
これだと、数値ではなく文字列になってしまいます。
No.1の私の回答でVALUE関数でくくっているのは、数値化して、そのあとの計算にも使えるようにするためです。
ありがとうございます。
私の方が理解が浅いのですが、
TEXT(A1,"hh:mm:ss") のセルが”0:30:00”となっている時
「=そのセル*2」で"1:00:00"になりますし、
書式設定でシリアル値にもなりましたので、
文字列ではなく数値に思えるんですよね。
MROUNDやTEXTの結果はいずれも同様の計算が出来たのでイマイチ違いが分かりません。
また、文字列になっているセルを、日付や時刻や数値に変換するのがTEXT関数ではないでしょうか?
私の理解が不足していたら教えて頂けると幸いです。
No.3
- 回答日時:
計算で得た結果とのことなので、計算誤差の累積でしょう。
方法としては、
案1:秒単位に丸めるなどして同一にする
案2:細かい桁では異なることを時刻形式のままで、なんとしても相手に伝えたい場合は、ミリ秒とかマイクロ秒まで含んだ時分秒形式で10進数文字列化する。ミリ秒までなら、セルの表示書式設定で「h:mm:ss.000」にすればよいですが、マイクロ秒だとExcelの標準機能では無いはずなので独自に計算や文字列処理で作り出すしかないです。ミリ秒までだと、上記A1 B1の差は出ないですね。マイクロ秒でも無理かも。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
夏が終わったと感じる瞬間って、どんな時?
まだまだ暑い今日この頃。 しかしながら、もう夏は終わっている!……はず。 あなたが思う「夏が終わった!」エピソードを教えてください。
-
【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
2024年は「名探偵コナン30周年」「涼宮ハルヒ20周年」などを迎えますが、 あなたが「もうそんなに!?」と驚いた○○周年を教えてください。
-
メモのコツを教えてください!
メモを取るのが苦手です。 急いでメモすると内容がごちゃごちゃになってしまったり、ひどいときには全く読めない時もあります。
-
【大喜利】世界最古のコンビニについて知ってる事を教えてください【投稿~10/10(木)】
【お題】 ・世界最古のコンビニについて知ってる事を教えてください
-
「お昼の放送」の思い出
小学校から中学校、ところによっては高校まで お昼休みに校内放送で、放送委員が音楽とかおしゃべりとか流してましたよね。 最近は自分でもラジオができるようになって、そのクオリティもすごいことになっていると聞きます。
-
Excelの数値の小数点表示について質問です
Excel(エクセル)
-
【Excel】版が同じ事を示す番号を生成したい
Excel(エクセル)
-
エクセル IF計算式?でしょうか?
Excel(エクセル)
-
-
4
2列に入っているデータを1列で表示する関数について
Excel(エクセル)
-
5
Excelで数値を時間数に変換する関数について
Excel(エクセル)
-
6
Excelの数式の効率化について
Excel(エクセル)
-
7
ある表にフィルターをかけて出てきた記号の個数を知りたいのですが、簡単な関数はないでしょうか?
Excel(エクセル)
-
8
Excelを無料で使うには? パソコン購入して、マイクロソフトに登録して そのままExcelがデスク
Excel(エクセル)
-
9
【ExcelVBA】UTF-8(BOM無)でCSV保存するには?
Excel(エクセル)
-
10
【マクロ】Ifとwith ステートメントにて分からない部分があります
Excel(エクセル)
-
11
【マクロ】フォルダ内にあるPDFを合体させるには?有料版adobe必要?
Excel(エクセル)
-
12
考えた式の戻り値が期待通りにならない
Excel(エクセル)
-
13
自動入力で今月はMONTH(TODAY())で良いのですが、翌月はどのようにすれば良いでしょうか。
Excel(エクセル)
-
14
時間によってファイル名が変わるエクセルをほかのエクセルでデータを参照する方法
Excel(エクセル)
-
15
【マクロ】ファイル名の変更について
Excel(エクセル)
-
16
数字入力後他の文字等が表示される方法について
Excel(エクセル)
-
17
エクセルのクイックアクセスツールバーには何を登録したら良いですか?罫線を引く「格子・枠なし・外枠」と
Excel(エクセル)
-
18
エクセルを使用して、円周率を表示させる方法
Excel(エクセル)
-
19
エクセルで数字の組み合わせを列記したい
Excel(エクセル)
-
20
【マクロ】functionプロシージャの、変数について
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・【お題】絵本のタイトル
- ・【大喜利】世界最古のコンビニについて知ってる事を教えてください【投稿~10/10(木)】
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・ハマっている「お菓子」を教えて!
- ・最近、いつ泣きましたか?
- ・夏が終わったと感じる瞬間って、どんな時?
- ・10秒目をつむったら…
- ・人生のプチ美学を教えてください!!
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【有効数字について】 授業で、...
-
進数の計算について質問です。 ...
-
エクセル2010で2進数の計算をす...
-
もしコンピューターが2進数か...
-
有効数字について
-
16bitはダイナミックレンジが97...
-
【エクセル】四捨五入・二捨三...
-
1TBHDDに音楽ファイルは何ア...
-
かけ算(わり算)と足し算(引き算...
-
文字の容量(サイズ)についての...
-
EXCELでの16進数取り出し、上...
-
32bit = 4GB(バイト)?
-
KBとMB
-
プログラム言語FortranとCの違...
-
携帯電話の略語であるMBって英...
-
KBのMB違いって
-
アルファベット30文字は何バイ...
-
EXCEL16進⇒浮動小数変換したい
-
マトリックスサイズが512×512で...
-
実行計画の「COST」と「BYTE」...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【有効数字について】 授業で、...
-
Excelの時刻の不思議
-
もしコンピューターが2進数か...
-
1TBHDDに音楽ファイルは何ア...
-
16bitはダイナミックレンジが97...
-
エクセル2010で2進数の計算をす...
-
かけ算(わり算)と足し算(引き算...
-
VBAで時間の型と計算方法教えて...
-
有効数字は最後答えを出すとき...
-
【エクセル】四捨五入・二捨三...
-
1秒は何ミリ秒とか、単位変換の...
-
ブルーレイディスクの容量に関...
-
ラジアンの変換について
-
進数の計算について質問です。 ...
-
8進数 8進数の47+32の答えを 8...
-
符号付の整数8ビット…
-
Excelの累乗について式とVBAで...
-
有効数字
-
有効数字の計算
-
12万の5%はいくらですか?
おすすめ情報