Excel、VBA 関係の話
#知恵袋にでも投稿しろって内容ですが😅
Excelで図のような計算式を入力したときに、2行目は0となるのに、4行目は端数が表示されます。
これってバグなんですかね?
ROUND関数とかを入れて適当に処理すれば対応可能ですが‥。
小数点以下の数字を(内部的に)2進数で計算して端数になるのは対策していると思いますが、対策漏れなんですかね?
IF関数が絡んでくると同じ式でもダメになるのが謎です。
※Excel2019です
※F列のセルは、書式で小数点以下を表示させています
※IF分のFALSE側の値に意味はありません
ーーーーーーーーーーーーーーーーーーーーーー
という感じのスレでしたが、Excel、VBAについて、何でも書き込めるようなスレにしたいかなと思い、タイトル変えてみました。
18 件のコメント
コメントするには、ログインまたはメンバー登録(無料)が必要です。
https://answers.microsoft.com/ja-jp/msoffice/forum/all/エクセル表/9c20b948-3e2f-4ff6-a264-a719ad545f4c
小数点の話だけに、うまく丸め込まれている気がします😁
試したのは、MAXとMIN関数だけですが、結果はIF文と同じです。
それとは別?
https://style.nikkei.com/article/DGXMZO49515450W9A900C1000000
根本の原因は内部的に2進数で計算しているからだと思いますが、数値を少し変えると起きなくなるんですよね。
弱点がカバーできてない!(;'∀')
昔あったMSXっていうパソコンは、内部的には10進数(2進化10進数(BCD))を使って計算していたので、正確と言われていました。ほぼゲーム機でしたけど😅
浮動小数点数だとそうなってしまいますからね。
If関数は、2番目の引数で、セル内での計算値の扱いが違うみたいですね。
影響は小さいけど、計算によっては
1.0000000000
0.9999999999
にもなるので、桁をたくさん使う時は工夫が必要かも🤔
If関数には要注意ですね。
>> アッカリ〜ン@_@….,….,…😅 さん
iPhoneエクセルでやってみましたが.8(80も)を他の数字に置き換えると
2,3,7,8以外はちゃんと0になりますね。
バグだと思いますがどうでしょうか?
確かにiPhoneのExcelでも再現しますね。
PC web上のiCloudのNumbersでは起きないみたいです。
PC web版のExcelでも起きました。
PC web版のgoogleスプレッドシートでも起きます!(添付)
手元のgnumeric(arm64 linux)で試したら両方とも一致しました\(^o^)/
F4の方の値にです
0にならないのは、桁溢れによるものでしょうが、IF文とそうでないのが合わないのは困った仕様ですね
>> アッカリ〜ン@_@….,….,…😅 さん
僕も謎解きはキライではないので気づいた事を一言🤔データは符号(-)付きですから表示形式が標準ですと変換が保証されないのだと思います。表示形式を数値データにすると0表示になります。無料のiPhoneエクセルで出来るのでPCエクセルならさらに表示形式もいろいろあるでしょうね。
>> 主水@今朝の秋 さん
数値にするといいみたいですね。ただ、マイナスを赤文字にしたい場合に3行目のようになってマイナスが表示されます😓あと細かいですが、なぜかこの数値を選ぶと、表示がちょっと左にずれます。ユーザー定義を使えばずれないみたいです。
重複する文字列を調べる式。
重複がなければ、1、重複があれば、重複している数の最大値。
この例だと2。
前半のA1:A10<>"" で TRUE, FALSEの配列を返す。
後半のCOUNTIFは、検索条件に領域を持ってくることで、その1つ1つに対して、COUNTIFを行い結果を配列で返す。
&""が付いているのは、文字列にするため。
2つを掛け合わせると、FALSE(0)に対応する要素が0になり、LARGEでその中の最も大きいものを抽出。
テーブルに対応する数値を定義しておいて、その合計を求める。
SUMIFだと、これでいけた。
VLOOKUPだと、ダメ。