「交流回路のインピーダンスをスプレッドシートで計算したら、偏角が 0.9273 と出た。これって何度?」
Googleスプレッドシートで複素数を扱っていると、こんな場面に出会いますよね。IMARGUMENT関数は複素数の偏角(位相角)を求める関数ですが、答えはラジアンで返ってきます。
しかも実軸より下側の複素数では、マイナスの角度が返るのが厄介なところ。報告書に「-53.1°」と書くべきか「306.9°」と書くべきか、迷った人も多いはずです。
結論から言うと、角度を度で欲しいなら次の 1 行で足ります。
=DEGREES(IMARGUMENT(A2))
この記事では、この式の意味と 0〜360° にそろえる補正をまず解説します。そのうえで、IMABS と組み合わせた「50.00∠53.1°」の極形式表示まで進む流れです。4 象限の早見表も付けたので、検算用にも使ってみてください。
スプレッドシートのIMARGUMENT関数とは?偏角(位相角)をラジアンで返す
IMARGUMENT(イマジナリー・アーギュメント)は、複素数の偏角を返す関数です。複素数 a+bi を平面上の点 (a, b) とみなし、原点から見た角度を求めます。
この角度は、数学では「偏角」、電気の分野では「位相角」と呼ばれます。名前の argument は英語で「偏角」の意味。実軸(横軸)のプラス方向を 0 として、そこから何ラジアン回った位置にあるかを表す値です。
結論:度で欲しいなら =DEGREES(IMARGUMENT(A2))
IMARGUMENT の答えはラジアン(一周を 2π とする角度の単位)です。度に直すには DEGREES関数 で包みましょう。
=IMARGUMENT("3+4i") → 0.9273(ラジアン)
=DEGREES(IMARGUMENT("3+4i")) → 53.1301(度)
A2 に複素数が入っているなら =DEGREES(IMARGUMENT(A2)) と書くだけ。ほとんどの場面は、この形で片づきます。
構文と引数(i / j どちらも可)
構文は引数 1 つだけのシンプルな形です。
=IMARGUMENT(数値)
| 引数 | 内容 |
|---|---|
| 数値 | 偏角を求めたい複素数。「3+4i」のような文字列、セル参照、COMPLEX 関数の結果を指定できる |
虚数単位は小文字の i と j のどちらでもかまいません。数学では i、電気工学では j を使うことが多いので、手元の表記に合わせてください。
実部と虚部が別々のセルにあるなら、COMPLEX関数で組み立ててから渡すと入力ミスが減ります。Google の公式ヘルプには、次の計算例が載っています。
=IMARGUMENT(COMPLEX(0,1)) → 1.570796327(π/2)
=IMARGUMENT(1) → 0
=IMARGUMENT("1+1i") → 0.7853981634(π/4)
IMSQRT などほかの IM 系関数は、答えを「a+bi」の形で返します。一方、IMARGUMENT が返すのは角度ひとつ。DEGREES や MOD にそのまま渡して、計算を続けられます。
戻り値の範囲は -π より大きく π 以下
偏角は、反時計回りをプラス、時計回りをマイナスとして測ります。数学上の規約(atan2 と同じ考え方)では、範囲は -π より大きく π 以下です。度で言えば、-180° より大きく 180° 以下になります。
つまり実軸より下側(虚部がマイナス)の複素数では、マイナスの角度が返るということ。なお Google の公式ヘルプには「ラジアンで返す」とあるだけで、範囲の記載はありません。
偏角を「度」で表示する方法
DEGREES 関数(または *180/PI())で度に直す
ラジアンを度に直す計算は「×180÷π」です。DEGREES 関数を使わずに、次のように書いても同じ結果になります。
=DEGREES(IMARGUMENT(A2))
=IMARGUMENT(A2)*180/PI()
どちらを選んでも答えは変わりません。式の意味がひと目でわかる DEGREES のほうが、あとから見返したときに迷わずに済むでしょう。
4象限+軸上の早見表(ラジアン・度・0〜360°補正後)
象限ごとに、IMARGUMENT の値と度、0〜360° に補正した値を並べました。値は小数第 4 位までの表示です。
| 複素数 | 位置 | IMARGUMENT(rad) | DEGREES(度) | MOD 補正後(度) |
|---|---|---|---|---|
| 3+4i | 第1象限 | 0.9273 | 53.1301 | 53.1301 |
| -3+4i | 第2象限 | 2.2143 | 126.8699 | 126.8699 |
| -3-4i | 第3象限 | -2.2143 | -126.8699 | 233.1301 |
| 3-4i | 第4象限 | -0.9273 | -53.1301 | 306.8699 |
| 0+1i | 虚軸のプラス側 | 1.5708 | 90 | 90 |
| 0-1i | 虚軸のマイナス側 | -1.5708 | -90 | 270 |
| -1 | 実軸のマイナス側 | 3.1416 ※ | 180 ※ | 180 |
※ -1 の値は、上で触れた数学上の規約(-π より大きく π 以下)に従った場合のものです。
第3・第4象限と虚軸のマイナス側で、度がマイナスになっていますよね。3+4i と 3-4i のように虚部の符号だけが違う複素数は、角度の符号もちょうど反転します。
マイナスの角度を 0〜360° にそろえる(MOD 補正)
マイナスの角度をなくしたいときは、MOD 関数(割り算の余りを返す関数)で 360 の余りを取ります。
=MOD(DEGREES(IMARGUMENT(A2)),360)
スプレッドシートの MOD は、割る数(ここでは 360)と同じ符号で余りを返します。そのため -53.1301 は 306.8699 に変わり、プラスの角度はそのまま残る仕組みです。
ラジアンのまま 0〜2π にそろえたいなら、割る数を 2*PI() にします。
=MOD(IMARGUMENT(A2),2*PI())
どちらの範囲で書くかは用途しだい。交流のフェーザ(大きさと角度で表した矢印)では ±180° の表記がよく使われます。方位のように一周で数えたい場面なら、0〜360° のほうが読みやすいでしょう。
IMABSと組み合わせて極形式(r∠θ°)で表示する
複素数は、大きさ r と角度 θ を使った「極形式」でも書けます。大きさを返すのが IMABS関数、角度を返すのが IMARGUMENT。この 2 つを並べれば、r∠θ° の形が作れます。
1セルで「50.00∠53.1°」と表示する式
A2 に複素数が入っているとして、次の式を入れます。
=TEXT(IMABS(A2),"0.00")&"∠"&TEXT(DEGREES(IMARGUMENT(A2)),"0.0")&"°"
A2 が 30+40i なら、結果は「50.00∠53.1°」になる計算です。ポイントは TEXT 関数で桁をそろえていること。& でつなぐだけだと、53.1301… の後ろに長い小数がそのまま並んでしまいます。
できあがるのは文字列なので、この結果を使った計算はできません。計算に使う値は、別の列に数値のまま残しておきましょう。
交流回路のインピーダンス(R=30Ω・X=40Ω)の例
インピーダンスは、交流での電流の流れにくさを表す複素数です。抵抗 R=30Ω、リアクタンス X=40Ω の回路なら、Z=30+j40Ω と書けます。
B2 に 30、C2 に 40 を入れて、各セルに次の式を入れてみてください。
D2: =COMPLEX(B2,C2) → 30+40i
E2: =IMABS(D2) → 50
F2: =DEGREES(IMARGUMENT(D2)) → 53.1301
G2: =TEXT(E2,"0.00")&"∠"&TEXT(F2,"0.0")&"°" → 50.00∠53.1°
大きさは √(30²+40²)=50Ω で、位相角は約 53.1° です。X がプラス(誘導性)なので、電流が電圧より約 53.1° 遅れる回路だと読み取れます。
列を分けて一覧を一括処理する(ARRAYFORMULA)
複数の複素数をまとめて処理するなら、ARRAYFORMULA(数式を範囲全体に広げる関数)が便利です。A2:A4 に複素数が並んでいるとして、B2・C2・D2 に 1 つずつ式を入れます。
B2: =ARRAYFORMULA(IMABS(A2:A4))
C2: =ARRAYFORMULA(DEGREES(IMARGUMENT(A2:A4)))
D2: =ARRAYFORMULA(TEXT(B2:B4,"0.00")&"∠"&TEXT(C2:C4,"0.0")&"°")
できあがる一覧は次のとおり。
| A: 複素数 | B: 大きさ | C: 偏角(度) | D: 極形式 |
|---|---|---|---|
| 30+40i | 50 | 53.1301 | 50.00∠53.1° |
| 40+30i | 50 | 36.8699 | 50.00∠36.9° |
| 50-50i | 70.7107 | -45 | 70.71∠-45.0° |
数値の B・C 列を残しておけば、あとから比較や並べ替えにも使えます。表示用の列と計算用の列を分けるのがコツ。
行が増えていく表なら、範囲を A2:A に広げて空白行を IF で除いておくと安心です。
=ARRAYFORMULA(IF(A2:A="","",DEGREES(IMARGUMENT(A2:A))))
ATAN2関数との関係と引数順の注意
偏角は、実部と虚部から逆正接(アークタンジェント)で求める値です。そのため、スプレッドシートの ATAN2関数 でも同じ角度を計算できます。
IMARGUMENT と ATAN2 の対応表(同じ値になる組み合わせ)
ATAN2 の公式の構文は ATAN2(x, y) です。x に実部、y に虚部を渡せば、IMARGUMENT と同じ値になるはず。対応を並べると次のとおりです。
| 複素数 | IMARGUMENT の式 | ATAN2 の式 | 値(rad) |
|---|---|---|---|
| 3+4i | =IMARGUMENT("3+4i") | =ATAN2(3,4) | 0.9273 |
| -3+4i | =IMARGUMENT("-3+4i") | =ATAN2(-3,4) | 2.2143 |
| 3-4i | =IMARGUMENT("3-4i") | =ATAN2(3,-4) | -0.9273 |
複素数が 1 つのセルに入っているなら、実部と虚部を取り出してから ATAN2 に渡します。実部は IMREAL関数、虚部は IMAGINARY関数 の担当です。
=ATAN2(IMREAL(A2),IMAGINARY(A2))
とはいえ、この形なら IMARGUMENT を 1 回書くほうが短く済みます。使い分けの目安は次のとおりです。
- 複素数が 1 セルにある:IMARGUMENT
- 実部と虚部が別の列にある:ATAN2
スプレッドシートの ATAN2 は (x, y) の順
気をつけたいのが引数の順番です。スプレッドシートの ATAN2 は、x(横)が先で y(縦)が後。Python の math.atan2(y, x) など、多くのプログラミング言語は y が先なので順番が逆になります。
プログラムの式をそのまま移すと、角度がずれてしまうので要注意。たとえば =ATAN2(4,3) は 0.6435 ラジアン(36.8699°)です。3+4i の偏角 53.1301° にはなりません。
IMARGUMENT なら引数が「a+bi」の 1 つだけなので、この取り違えは起こりません。順番に自信がないときこそ、IMARGUMENT を使うのがおすすめです。
IMARGUMENT関数のよくあるエラーと注意点
IMARGUMENT のエラーは、IM 系のほかの関数と同じ規則で起こります。入力の例と結果を表にまとめました。
| 入力の例 | 結果 | 対処 |
|---|---|---|
"1 + 1i"(半角の空白入り) | 空白なしと同じ値 | そのままでよい |
"3 + 4i"(全角の空白入り) | #NUM! | 空白を半角にするか削る |
"3+4I"(大文字の I) | #NUM! | 小文字の i / j に直す |
"3+4i"(全角の数字) | #NUM! | 半角で入力し直す |
"3+4k"・"hello" | #NUM! | 「a+bi」の形に直す |
TRUE / FALSE(論理値) | #NUM! | 複素数のセルを参照する |
#N/A などのエラー値 | #N/A がそのまま返る | 参照先のエラーを先に直す |
"0"・COMPLEX(0,0) | エラー(公式ヘルプに記載) | IFERROR などで除外する |
公式ヘルプの使用例には、大文字の I を使った「2+3I」という書き方も載っています。ただ、IM 系の関数では大文字の I は #NUM! になる扱いです。例をコピーするときは、小文字の i に直しておきましょう。
0 については、公式ヘルプに「複素数として 0 を指定した場合はエラーを返す」とあります。原点には向きがないので、角度が決まらないためです。
0 が混じりそうな表では、IFERROR で空欄にしておくと一覧が崩れません。
=IFERROR(DEGREES(IMARGUMENT(A2)),"")
ただし IFERROR は、大文字の I などの入力ミスも一緒に隠してしまいます。空欄が出たら、元のデータを一度見直してみてください。
まとめ
スプレッドシートの IMARGUMENT関数は、複素数の偏角(位相角)をラジアンで返す関数です。押さえておきたいポイントは次のとおり。
- 度で欲しいなら
=DEGREES(IMARGUMENT(A2)) - マイナスの角度を 0〜360° にそろえるなら
=MOD(DEGREES(IMARGUMENT(A2)),360) - IMABS と TEXT を組み合わせれば「50.00∠53.1°」の極形式で表示できる
- ATAN2(実部, 虚部) でも同じ角度を求められる。引数は (x, y) の順
- 虚数単位は小文字の i / j。大文字や全角は
#NUM!
逆に、極形式から a+bi の形へ戻したいときは、オイラーの公式を使う IMEXP関数 の出番です。
また、複素数を n 乗すると偏角は n 倍になります(ド・モアブルの定理)。気になる人は IMPOWER関数 で 1+1i を 2 乗し、45° が 90° になる様子を試してみてください。
Excel で同じ計算をしたい人は、ExcelのIMARGUMENT関数の使い方が参考になります。まずは手元の複素数で =DEGREES(IMARGUMENT(A2)) を入れて、何度になるかを確かめるところから始めてみましょう。

