Help us understand the problem. What is going on with this article?

Excelで”^”は使わずPOWER()関数を使おう

Abstract

  • Excelの演算子”^”を使うときは注意が必要
  • Excelでは、「-x^y」の計算は「(-x)^y」と解釈される
  • 「POWER(x,y)」という関数を使うことで、この問題は避けられる

問題

Excelで累乗(3の2乗、等)を計算する方法として、演算子”^”が用いられます。
=3^2
と入力すると
9
と表示されます。

演算子”^”で累乗を表現するのは割と一般的で、
TEXでも”^”を使って累乗を表します1

ところが、Excelで
=-3^2
と入力すると
9
と表示されます。

先に3^2が計算されて、最後に符号-が付いて
-9
と表示されるのと期待するのが普通だと思いますが、そうはなりません。

なお、Excelで
=0-3^2
と入力すると、
-9
と表示されます。

Excel…どうして…

こちらのページによれば、
どうやらExcelの演算子の優先順位が特殊で、
同じ”-”でも

  • 式の先頭の”-”
  • 式の途中の”-”

では扱いが異なるようです。
それぞれの”-”と”^”の優先順位を並べると、
(先頭の”-”)>(”^”)>(途中の”-”)
となっています。

そのため、
=-3^2
の式は
=-3^2=(-3)^2=9
となる一方、
=0-3^2
の式は
=0-3^2=0-(3^2)=0-9=-9
となります。

POWER()関数

Excelには、累乗を計算する関数としてPOWER()というのがあります。
=POWER(3,2)
と入力すると
9
と表示されます。

この関数を使うことで、
=-POWER(3,2)
と入力すれば
-9
と表示されますし、
=POWER(-3,2)
と入力すると
9
と表示されます。

後書き

ExcelでRCフィルタ回路計算をさせているときに、計算が合わずにハマりました。
「^」と比べると「POWER()」ってタイピングするのは手間ですが、
後で計算が合わなくなって困るよりはマシだと思って
累乗計算では「POWER()」を使うようにしています。

明らかにExcelの仕様ミスな気がしますが、互換性の観点から、修正されることはないでしょうね2


  1. プログラム言語はまちまちです。昔、C言語でうっかり’10^3’と打って痛い目見たことあります。 

  2. 未だにセル指定状態で「/」と打つとメニューバーがアクティブになる仕様が生きてますしね。これ、いにしえの表計算ソフト「Lotus 1-2-3」と操作性の互換を取るためなんです。(なお、設定で無効にできます。) 

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away