掲示板

Excel、VBA 関係の話

スクリーンショット_2022-01-13_114300.png

#知恵袋にでも投稿しろって内容ですが😅

Excelで図のような計算式を入力したときに、2行目は0となるのに、4行目は端数が表示されます。
これってバグなんですかね?

ROUND関数とかを入れて適当に処理すれば対応可能ですが‥。
小数点以下の数字を(内部的に)2進数で計算して端数になるのは対策していると思いますが、対策漏れなんですかね?

IF関数が絡んでくると同じ式でもダメになるのが謎です。

※Excel2019です
※F列のセルは、書式で小数点以下を表示させています
※IF分のFALSE側の値に意味はありません

ーーーーーーーーーーーーーーーーーーーーーー

という感じのスレでしたが、Excel、VBAについて、何でも書き込めるようなスレにしたいかなと思い、タイトル変えてみました。


18 件のコメント
1 - 18 / 18
面白い。私もやってみます
なんか同じような質問している人を見つけましたが、
https://answers.microsoft.com/ja-jp/msoffice/forum/all/エクセル表/9c20b948-3e2f-4ff6-a264-a719ad545f4c

小数点の話だけに、うまく丸め込まれている気がします😁
IF分だけでなく、他の関数でも何でも起こるっぽいです。
試したのは、MAXとMIN関数だけですが、結果はIF文と同じです。
昔電卓の小数点以下で誤差が起こる理由を先生が言ってた気がするけど、それとは別かなー
内部的に2進数で持ってるけど、小数点以下はどうたらこうたら…という話でしたが(うろ覚え過ぎるw)
それとは別?
パソコンも計算間違い 0.1+0.1+0.1=0.3じゃない!?
https://style.nikkei.com/article/DGXMZO49515450W9A900C1000000

根本の原因は内部的に2進数で計算しているからだと思いますが、数値を少し変えると起きなくなるんですよね。
>「じゃあ、安心してコンピューターに計算をまかせられないじゃないか」と不安を感じた人もいるでしょう。でも大丈夫。このようにコンピューターの苦手な所とその原理は明らかなので、その弱点をカバーするようにアプリを作ることができます。

弱点がカバーできてない!(;'∀')

昔あったMSXっていうパソコンは、内部的には10進数(2進化10進数(BCD))を使って計算していたので、正確と言われていました。ほぼゲーム機でしたけど😅
=1/3 でも、小数15桁までは3だけど、16桁目からは0になります。
浮動小数点数だとそうなってしまいますからね。

If関数は、2番目の引数で、セル内での計算値の扱いが違うみたいですね。
影響は小さいけど、計算によっては
1.0000000000
0.9999999999
にもなるので、桁をたくさん使う時は工夫が必要かも🤔

If関数には要注意ですね。

>> アッカリ〜ン@_@….,….,…😅 さん

iPhoneエクセルでやってみましたが
.8(80も)を他の数字に置き換えると
2,3,7,8以外はちゃんと0になりますね。
バグだと思いますがどうでしょうか?
表示形式を標準から数値に変えると負の数字の表示形式ですが(0)になります。
そういえば、色々な表計算ソフトで見てみるんでした‥ちょっと防衛軍のほうに行ってました(^^;;;

確かにiPhoneのExcelでも再現しますね。

スクリーンショット_2022-01-13_231149.png

PC web上のiCloudのNumbersでは起きないみたいです。

スクリーンショット_2022-01-13_232845.png

PC web版のExcelでも起きました。
PC web版のgoogleスプレッドシートでも起きます!(添付)
面白いです
手元のgnumeric(arm64 linux)で試したら両方とも一致しました\(^o^)/
F4の方の値にです

0にならないのは、桁溢れによるものでしょうが、IF文とそうでないのが合わないのは困った仕様ですね

5677CD08-F6E2-4FDF-BB4A-242BB8152E58.jpeg

>> アッカリ〜ン@_@….,….,…😅 さん

僕も謎解きはキライではないので気づいた事を一言🤔
データは符号(-)付きですから表示形式が標準ですと変換が保証されないのだと思います。表示形式を数値データにすると0表示になります。無料のiPhoneエクセルで出来るのでPCエクセルならさらに表示形式もいろいろあるでしょうね。

スクリーンショット_2022-01-16_174526.png

>> 主水@今朝の秋 さん

数値にするといいみたいですね。ただ、マイナスを赤文字にしたい場合に3行目のようになってマイナスが表示されます😓

あと細かいですが、なぜかこの数値を選ぶと、表示がちょっと左にずれます。ユーザー定義を使えばずれないみたいです。

スクリーンショット_2024-09-24_225413.png

重複する文字列を調べる式。
重複がなければ、1、重複があれば、重複している数の最大値。
この例だと2。

前半のA1:A10<>"" で TRUE, FALSEの配列を返す。
後半のCOUNTIFは、検索条件に領域を持ってくることで、その1つ1つに対して、COUNTIFを行い結果を配列で返す。
&""が付いているのは、文字列にするため。
2つを掛け合わせると、FALSE(0)に対応する要素が0になり、LARGEでその中の最も大きいものを抽出。

スクリーンショット_2024-10-21_225752.png

テーブルに対応する数値を定義しておいて、その合計を求める。
SUMIFだと、これでいけた。
VLOOKUPだと、ダメ。
コメントするには、ログインまたはメンバー登録(無料)が必要です。