「スプレッドシートで複素数の大きさを求めたいけど、ピタゴラスの定理を毎回手で組み立てるのは面倒…」
スプレッドシートで電気回路や信号処理の計算をしていると、複素数(a+biの形で表される数)の絶対値(原点からの距離、つまり大きさ)を求めたい場面がありますよね。文字列「3+4i」から実部と虚部を取り出して、二乗して足して平方根を取る、という操作を毎回手で組み立てるのは大変です。
そんなときに頼りになるのがGoogleスプレッドシートのIMABS関数です。複素数を渡すだけで絶対値を一発で計算してくれるので、回路設計やフーリエ解析の作業が一気に軽くなりますよ。
ExcelのIMABS関数と完全互換なので、Excelファイルとやり取りする現場でも安心です。COMPLEX関数で作った複素数や、IMSUM・IMSUBの演算結果からも大きさをそのまま取り出せますね。
この記事では、スプレッドシートのIMABS関数の基本構文と実務での活用例を解説します。IMREAL/IMAGINARY関数との使い分けや、よくあるエラーと対処法もしっかり紹介していきますよ。
スプレッドシートのIMABS関数とは?
GoogleスプレッドシートのIMABS関数(イマジナリー・アブソリュート関数)は、複素数の絶対値を返す関数です。エンジニアリング関数(電気・物理・工学系の計算で使う関数群)のひとつに分類されますよ。
読み方は「イマジナリー・アブソリュート」または「アイエム・アブス」で、英語の「imaginary number(虚数)」の「absolute value(絶対値)」に由来します。複素数「a+bi」の絶対値、つまり√(a²+b²)を返してくれるのが役割ですね。
そもそも複素数の絶対値とは、複素平面上で原点(0,0)から点(a,b)までの距離のことです。ピタゴラスの定理から √(a²+b²) という形で計算されます。modulus(モジュラス)や magnitude(マグニチュード)とも呼ばれますね。
| 複素数 | 絶対値の計算 | 結果 |
|---|---|---|
| 3+4i | √(3²+4²)=√25 | 5 |
| 5+12i | √(5²+12²)=√169 | 13 |
| 1+i | √(1²+1²)=√2 | 約1.4142 |
| -3+4i | √(9+16)=√25 | 5 |
| 3i | √(0+9) | 3 |
IMABS関数を使えば、この√計算をサクッと済ませられます。Excelとの互換性も完璧で、Excel 2007以降のすべてのバージョンに対応していますよ。
IMABS関数の書き方(構文と引数)
基本構文
=IMABS(複素数)
引数は1つだけのシンプルな関数です。
引数の詳細
| 引数 | 必須/任意 | 説明 |
|---|---|---|
| 複素数(inumber) | 必須 | 絶対値を求めたい複素数。文字列またはセル参照で指定する |
引数には「”3+4i”」や「”3+4j”」のような複素数文字列を直接渡せます。COMPLEX関数(実数と虚数から複素数を作成する関数)の結果や、複素数が入ったセルの参照も指定できますよ。
虚数単位は小文字の「i」または「j」のどちらでも受け付けます。数学では「i」、電気工学では「j」が使われる慣習ですね。IMABS関数はどちらでも同じように動作してくれます。
TIP
IMABS関数の戻り値は常に0以上の実数です。絶対値(距離)の性質上、マイナスにはなりませんよ。実部や虚部が負の値でも、二乗して足すので符号は影響しないんですね。
IMABS関数の基本的な使い方
文字列で複素数を直接指定する
複素数文字列をそのまま引数に渡してみましょう。
=IMABS("3+4i")
結果は「5」になります。√(3²+4²) = √25 = 5 という計算ですね。3:4:5 の直角三角形の斜辺と同じ値です。
実部や虚部が負の数でも、絶対値は正の値で返ります。
=IMABS("-3+4i")
結果は「5」です。実部の符号は二乗で消えるので、絶対値の結果には影響しないんですね。
セル参照で複素数を指定する
実務ではセルに入った複素数を扱う場面が多いですよね。A2に「5+12i」が入っている場合は次のように書きます。
=IMABS(A2)
結果は「13」になります。√(25+144) = √169 = 13 ですね。セル参照を渡すだけで、入っている複素数の大きさを取り出せますよ。
COMPLEX関数と組み合わせる
COMPLEX関数で作った複素数の絶対値を、その場で計算することもできます。
=IMABS(COMPLEX(6, 8))
結果は「10」です。COMPLEX(6, 8)は内部で「6+8i」を作り、IMABS関数がその絶対値「10」を返してくれますね。
実数と虚数を別々のセルに分けて管理しているシートで、絶対値だけ一発で計算したいときに便利な書き方ですよ。
純実数や純虚数を扱う
実部だけ、または虚部だけの複素数も問題なく扱えますよ。
| 数式 | 結果 | 説明 |
|---|---|---|
=IMABS("3i") | 3 | 純虚数の絶対値は虚数係数の絶対値 |
=IMABS("-2j") | 2 | 符号は二乗で消える |
=IMABS("i") | 1 | 「i」は「0+1i」と同じ |
=IMABS(5) | 5 | 純実数を渡すとABS関数と同じ挙動 |
=IMABS(-5) | 5 | 負の数も正の値で返る |
=IMABS("0") | 0 | 0の絶対値は0 |
純実数を渡すと、ABS関数(実数の絶対値を返す関数)と同じ結果になります。複素数も実数も同じ関数で扱えるので、データの型を気にせず使えますね。
ARRAYFORMULAで複数行を一括処理する
複素数のリストから一気に絶対値の列を作りたい場面もありますよね。そんなときはARRAYFORMULA関数(数式を範囲全体に展開する関数)と組み合わせます。
=ARRAYFORMULA(IMABS(A2:A10))
A列に並んだ複素数から、対応する絶対値をB列に一発で展開できますよ。FFT結果の振幅スペクトルを作るときなどに重宝しますね。
IMABS関数の実務活用例
活用例1: 交流回路のインピーダンス絶対値
交流回路のインピーダンス(電流の流れにくさ)は「Z = R + jX」という複素数で表されます。Rは抵抗成分、Xはリアクタンス(コイルやコンデンサが生む虚数成分)ですね。
セルA2にインピーダンス「50+30j」が入っているとしましょう。
=IMABS(A2)
結果は約「58.31」になります。√(50²+30²) = √3400 ≈ 58.31 Ω ですね。これがインピーダンスの大きさ |Z| です。
電圧と電流の関係 V = I·|Z| を計算するときに、この絶対値が必要になりますよ。回路設計のときに必ず登場する量なので、IMABS関数で素早く出せると便利ですね。
IMREAL関数で抵抗成分R、IMAGINARY関数でリアクタンスX、IMABS関数で大きさ|Z|、と役割分担できると、回路の挙動が一気に把握できますね。
活用例2: フーリエ変換のパワースペクトル振幅
信号処理のフーリエ変換(信号を周波数成分に分解する手法)では、変換結果が複素数で出力されます。各周波数成分の「振幅」を見たいときは、複素数の絶対値を取りますよ。
B列にFFT結果の複素数が並んでいる場合は次のように書きます。
=IMABS(B2)
これで各周波数のパワースペクトル振幅が求まります。信号の周波数特性をグラフ化する際の標準操作ですね。
ARRAYFORMULAで一括処理すれば、スペクトル全体を一気に計算できますよ。
=ARRAYFORMULA(IMABS(B2:B1025))
数値計算ソフトで出した複素スペクトルをスプレッドシートに貼り付けて、振幅グラフを作る流れに自然に組み込めますね。
活用例3: 制御工学のボード線図ゲイン計算
制御工学では、伝達関数 G(jω) の絶対値がそのままシステムのゲイン(増幅度)になります。ボード線図のゲイン軸は 20·log10(|G(jω)|) で表しますよ。
セルA2に各周波数での G(jω) の値が複素数として入っているとしましょう。
ゲイン: =IMABS(A2)
ゲイン[dB]: =20*LOG10(IMABS(A2))
IMABS関数で絶対値を取り、LOG10関数(常用対数を返す関数)でデシベル換算します。複素数のままで扱えるので、伝達関数評価のシート設計が楽になりますね。
活用例4: 2点間の距離計算
複素数の引き算結果にIMABS関数を適用すると、複素平面上の2点間の距離が求まります。
=IMABS(IMSUB("3+4i", "1+1i"))
内側のIMSUB関数(複素数の引き算)が「(3+4i) – (1+1i) = 2+3i」を計算します。外側のIMABS関数がその絶対値「√13 ≈ 3.606」を返してくれますね。
2次元の座標を複素数として扱えば、ピタゴラスの定理を毎回書かずに距離計算ができますよ。
IMABS関数と他の複素数関数の違い
複素数を扱う関数にはいくつか種類があります。それぞれが返す値を整理しておきましょう。
| 関数 | 返す値 | 数式の意味 |
|---|---|---|
| IMREAL | 実数係数 a | a |
| IMAGINARY | 虚数係数 b | b |
| IMABS | 絶対値(大きさ) | √(a² + b²) |
| IMARGUMENT | 偏角(角度) | atan2(b, a) |
複素数 z = 3+4i を例にすると、それぞれの結果はこうなりますよ。
| 関数 | 数式 | 結果 |
|---|---|---|
| IMREAL | =IMREAL("3+4i") | 3 |
| IMAGINARY | =IMAGINARY("3+4i") | 4 |
| IMABS | =IMABS("3+4i") | 5 |
| IMARGUMENT | =IMARGUMENT("3+4i") | 約0.927(rad) |
IMREALとIMAGINARYは「直交座標」での成分(横・縦の長さ)を返します。IMABSとIMARGUMENTは「極座標」での成分(原点からの距離・角度)を返しますよ。同じ複素数を別の表現に変換できる、と覚えておくと便利ですね。
IMABS関数とABS関数の違い
ABS関数は実数の絶対値を返す関数です。IMABS関数と似ていますが、扱える引数の形式が違いますよ。
| 関数 | 扱える引数 | 例 | 結果 |
|---|---|---|---|
| ABS | 実数のみ | =ABS(-5) | 5 |
| IMABS | 複素数文字列・実数 | =IMABS("3+4i") | 5 |
ABS関数に複素数文字列「”3+4i”」を渡すと #VALUE! エラーになります。一方、IMABS関数は実数を渡しても問題なく動くので、ABS関数の上位互換のような使い方もできますね。
実数しか扱わない場面ではABS関数で十分ですが、複素数が混ざる可能性があるならIMABS関数を使っておくと安心ですよ。
IMABS関数のよくあるエラーと対処法
#NUM! エラー
複素数として認識できない文字列を渡したときに発生します。虚数単位が大文字になっていたり、i・j以外の文字を使っている場合が典型例ですよ。
=IMABS("3+4I") → #NUM!(大文字のIは不可)
=IMABS("3+4k") → #NUM!(i・j以外は不可)
=IMABS("3+4i") → #NUM!(全角文字は不可)
対処法は、複素数文字列を必ず半角の「a+bi」または「a+bj」の形式にすることです。虚数単位は小文字限定なので、CapsLockがオンになっていないか確認してくださいね。
スペースが入っている場合(例: "3 + 4i")も認識できないことがあるので、余計な空白を除いておくと安心です。
#VALUE! エラー
引数に論理値やエラー値を渡したときに発生します。
=IMABS(TRUE) → #VALUE!(論理値は不可)
=IMABS(#N/A) → #VALUE!(エラー値は不可)
対処法は、正しい複素数文字列または数値・セル参照を渡すことです。入力元のセルがエラーになっている場合は、そのエラーを先に解消する必要がありますよ。
0が返るのはエラーではない
複素数「0」や「0+0i」を渡すと結果が「0」になりますが、これはエラーではなく正常動作です。原点の絶対値は0なので、数学的に正しい結果ですよ。
=IMABS("0") → 0
=IMABS("0+0i") → 0
=IMABS(0) → 0
意図せず0が返る場合は、入力元のセルが空欄や0扱いになっていないか確認してみてくださいね。
IFERRORでエラーを吸収する
入力データの信頼性が低い場合は、IFERROR関数(エラー時に代替値を返す関数)で包んでおくと安心です。
=IFERROR(IMABS(A2), "形式エラー")
エラー時にメッセージを返すようにしておけば、シート全体の集計が止まらずに済みますよ。
IMABS関数とExcelの互換性
GoogleスプレッドシートのIMABS関数は、ExcelのIMABS関数と仕様が完全に一致しています。構文・引数・戻り値の形式・エラー条件まで同じですよ。
ExcelファイルをGoogleスプレッドシートで開いてもIMABS関数はそのまま動作します。逆にスプレッドシートで作った数式をExcelで開いても問題ありませんね。
ExcelのIMABS関数は、Excel 2007以降のすべてのバージョンで利用できます。Microsoft 365、Excel for Mac、Excel Online でも同じように使えますよ。
Excel版の詳細な解説はExcelのIMABS関数の使い方も参考にしてくださいね。プラットフォーム間で挙動が同じだと、ファイル共有のときにも安心です。
複素数関連の関数一覧
IMABS関数と一緒に使うことが多い、複素数関連の関数をまとめました。
| 関数名 | 機能 |
|---|---|
| COMPLEX | 実数と虚数から複素数を作成する |
| IMREAL | 複素数の実数係数を返す |
| IMAGINARY | 複素数の虚数係数を返す |
| IMABS | 複素数の絶対値を返す |
| IMARGUMENT | 複素数の偏角(角度)を返す |
| IMCONJUGATE | 共役複素数を返す |
| IMSUM | 複素数の合計(足し算)を返す |
| IMSUB | 複素数の差(引き算)を返す |
| IMPRODUCT | 複素数の積(掛け算)を返す |
| IMDIV | 複素数の商(割り算)を返す |
| IMEXP | 複素数の指数関数を返す |
| IMLN | 複素数の自然対数を返す |
| IMSQRT | 複素数の平方根を返す |
IMABS関数は、これら複素数関数群の中で「大きさを取り出す」役割を担います。IMREALやIMAGINARYで成分を分離するのに対して、IMABSは複素数を一つのスカラー量に変換しますね。
まとめ
GoogleスプレッドシートのIMABS関数は、複素数の絶対値(√(a²+b²))を返す関数です。エンジニアリング系の計算で複素数の大きさを扱うときに、欠かせない計算ツールになりますよ。
- 構文は
=IMABS(複素数)で引数は1つだけのシンプルな関数 - 「a+bi」「a+bj」のどちらの形式も受け付ける(虚数単位は小文字のみ)
- 戻り値は常に0以上の実数(絶対値の性質上、マイナスにならない)
- 実部や虚部の符号は結果に影響しない(二乗で消える)
- COMPLEX関数の結果やセル参照、複素数演算の結果から大きさを取り出せる
- 純実数を渡すとABS関数と同じ挙動になる
- ARRAYFORMULAで複数の複素数を一括処理できる
- 交流回路のインピーダンス絶対値、フーリエ変換の振幅スペクトル、制御工学のゲイン計算で活躍
- ExcelのIMABS関数と完全互換(Excel 2007以降)
- 大文字の「I」「J」や全角文字、i・j以外の単位は #NUM! エラーになる
複素数の大きさを使った計算やグラフ化が必要になったら、IMABS関数の出番ですよ。COMPLEX関数で複素数を作り、IMREALで実部、IMAGINARYで虚部、IMABSで大きさ、と役割分担で使えば、エンジニアリング系のシートを軽快に組み立てられますね。
