No.1ベストアンサー
- 回答日時:
演算子が計算される優先順序の違い,言い換えるなら単純に設計に違いです。
ワークシートの計算における順番:
--エクセルのヘルプより抜粋-----------
1 つの数式で複数の演算子を使用する場合、次の表に示した順序で計算が実行されます。数式に同順位の演算子が含まれる場合 (たとえば、乗算演算子と除算演算子が含まれる場合)、左から右の順に計算が実行されます。
: (コロン)
(スペース 1 つ)
, (カンマ)
参照演算子
– 負の値 (-1 など)
% パーセンテージ
^ べき算
* または / 乗算または除算
+ または - 加算または減算
& 文字列の結合または連結
= < > <= >= <> 比較演算子
------------
以上によりマイナス負号が先に計算され(-2),その2乗が計算されます。
VBAの計算における順番:
--VBAのヘルプより抜粋-----------
異なる種類の演算子が 1 つの式の中で使われている場合、算術演算子、比較演算子、論理演算子の順序で評価されます。(中略) 算術演算子および論理演算子は、次に示す順序で評価されます。
算術演算子
指数演算 (^)
マイナス符号 (-)
乗算と除算 (*、/)
整数除算 (\)
剰余演算 (Mod)
加算と減算 (+、-)
文字列連結 (&)
---------
以上により2乗(^2)が先に計算され,そのマイナスが計算結果になります。
有難う御座います。
ワークシートで正しく計算させるには以下のようにする必要があるようですね。
=-((2)^2);-4
=((-2)^2);4
またワークシートの式をそのままVBAに渡すときは要注意ですね。
純粋に数学的な表記が出来ないのは不便・・というか利用者にとっては殆どバグに近いような気がします
なぜそうなっているのか・・という新たな疑問が持ち上がります
因にMACのNumbersやOpen Officeのスプレッドシートも同じ仕様でした。
No.2
- 回答日時:
VBAに関することは知りませんが…
Excel 2002 のヘルプ「演算子の優先順位」によれば、次のように記載されています。
演算子 内容
----- --------
– 負の値 (-1 など)
% パーセンテージ
^ べき算
* または / 乗算または除算
+ または - 加算または減算
従って、私は次のように理解しています。
=10-2^2 あるいは =0-2^2 の場合、「-」は減算を意味しているので、それぞれ 6 あるいは -4 を返します。つまり、=10-(2^2) あるいは =0-(2^2) と同じこと。
しかし、=-2 の「-」は直後の数値が負であることを意味しているので、式 =-2^2 は =(-2)^2 と同じ計算をするために 4 が返るのだ、と。
有難う御座います。
VBAとワークシートで「演算の優先順位」の仕様が異なる事にすごく違和感があります。
仕様に注意し数学的表記通りに演算されていないという事があるという事を肝に銘じます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) アンケート集計用VBAについて教えて下さい。 約100人にアンケート内容が入ったExcelファイルを 1 2022/07/27 13:12
- Excel(エクセル) エクセル・スプレッドシートで、一定数を超えたらゼロから再累計する方法 8 2022/05/28 03:52
- Excel(エクセル) Excel VBA 指定セルに入力されているパスからシートをコピーして別のブックに転記するVBAのコ 2 2022/04/19 15:53
- Visual Basic(VBA) EXCELのVBAについて 2 2023/07/05 17:17
- Excel(エクセル) エクセルで計算結果が0でないときのみセルを更新したい 4 2022/07/30 11:58
- Visual Basic(VBA) ExcelのVBAを使い、複数シートの同一箇所を、同一条件にて一括でソルバーを回す方法について 1 2022/04/23 11:49
- Visual Basic(VBA) Accessフォームで全レコードを指定のExcelのセルへ転送し印刷する方法について 2 2022/09/08 18:23
- その他(データベース) Accessフォームからパラメーターで表示したレコードを指定のExcelのセルへ転送する方法について 2 2022/08/22 18:04
- Excel(エクセル) ExcelのVBAで再帰処理を使って、1〜10までの整数の和と10の階乗の計算をしたいです。どなたか 1 2022/11/24 10:59
- Excel(エクセル) マクロVBA別Excelブックにデータ転記 2 2022/07/10 23:35
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【有効数字について】 授業で、...
-
VBAで時間の型と計算方法教えて...
-
accessのデータ型について
-
16bitはダイナミックレンジが97...
-
もしコンピューターが2進数か...
-
エクセル2010で2進数の計算をす...
-
電子透かしを使用した場合の著...
-
文字の容量(サイズ)についての...
-
実行計画の「COST」と「BYTE」...
-
EXCELでの16進数取り出し、上...
-
JIS、SHIFT-JIS、EUCはなぜでき...
-
携帯電話の略語であるMBって英...
-
組み込みCプログラムで実数型
-
VBAでのコントロール操作
-
KBのMB違いって
-
改行削除の便利な方法について
-
EXCEL16進⇒浮動小数変換したい
-
シフトjisコードで記載された40...
-
ワードの改行について
-
32bit = 4GB(バイト)?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【有効数字について】 授業で、...
-
16bitはダイナミックレンジが97...
-
もしコンピューターが2進数か...
-
有効数字は最後答えを出すとき...
-
かけ算(わり算)と足し算(引き算...
-
エクセル2010で2進数の計算をす...
-
VBAで時間の型と計算方法教えて...
-
有効数字
-
【エクセル】四捨五入・二捨三...
-
ブルーレイディスクの容量に関...
-
有効数字の計算
-
8進数 8進数の47+32の答えを 8...
-
1秒は何ミリ秒とか、単位変換の...
-
有効数字について
-
なぜ1と0か?
-
Excelの累乗について式とVBAで...
-
有効数字計算 確定した値を含む
-
1TBHDDに音楽ファイルは何ア...
-
次の加算(2進数4ビット)でオ...
-
ラジアンの変換について
おすすめ情報