「スプレッドシートで複素数の虚数部だけを取り出したいけど、文字列をどう分解すればいいんだろう…」
スプレッドシートで電気回路や信号処理の計算をしていると、複素数(a+biの形で表される数)から虚数部だけを抜き出したい場面がありますよね。文字列としての「3+4i」から「4」を取り出すのに、わざわざ文字列操作関数を駆使するのは大変です。
そんなときに頼りになるのがGoogleスプレッドシートのIMAGINARY関数です。複素数を渡すだけで虚数係数を数値として取り出せるので、その値をそのまま計算に使えますよ。
ExcelのIMAGINARY関数と完全互換なので、Excelファイルとやり取りする現場でも安心です。COMPLEX関数で作った複素数や、IMSUM・IMSUBの演算結果からも虚部を切り出せますね。
この記事では、スプレッドシートのIMAGINARY関数の基本構文と実務での活用例を解説します。IMREAL関数との違いや、よくあるエラーと対処法もしっかり紹介していきますよ。
スプレッドシートのIMAGINARY関数とは?
GoogleスプレッドシートのIMAGINARY関数(イマジナリー関数)は、複素数の虚数係数を数値で返す関数です。エンジニアリング関数(電気・物理・工学系の計算で使う関数群)のひとつに分類されますよ。
読み方は「イマジナリー」で、英語の「imaginary(虚数の)」に由来します。複素数「a+bi」のうち、虚数部にあたる係数「b」を抜き出すのが役割ですね。
そもそも複素数は「実数部(a)+虚数部(bi)」という構造で表されます。虚数単位「i」は2乗すると-1になる仮想的な数で、電気工学では「j」と書くこともありますね。
| 複素数 | 実数係数(a) | 虚数係数(b) |
|---|---|---|
| 3+2i | 3 | 2 |
| -4+6i | -4 | 6 |
| 5(実数のみ) | 5 | 0 |
| 3i(純虚数) | 0 | 3 |
IMAGINARY関数を使えば、この表の右端の「虚数係数」だけをサクッと取り出せます。Excelとの互換性も完璧で、Excel 2007以降のすべてのバージョンに対応していますよ。
IMAGINARY関数の書き方(構文と引数)
基本構文
=IMAGINARY(複素数)
引数は1つだけのシンプルな関数です。
引数の詳細
| 引数 | 必須/任意 | 説明 |
|---|---|---|
| 複素数(inumber) | 必須 | 虚数係数を取り出したい複素数。文字列またはセル参照で指定する |
引数には「”3+4i”」や「”3+4j”」のような複素数文字列を直接渡せます。COMPLEX関数(実数と虚数から複素数を作成する関数)の結果や、複素数が入ったセルの参照も指定できますよ。
虚数単位は小文字の「i」または「j」のどちらでも受け付けます。数学では「i」、電気工学では「j」が使われる慣習ですね。IMAGINARY関数はどちらでも同じように動作してくれます。
TIP
実数(虚数部がない値)を渡した場合は、エラーにならず「0」が返ります。たとえば
=IMAGINARY(5)や=IMAGINARY("5")の結果はどちらも0になりますよ。純実数は虚数部が0なので、これは正しい挙動ですね。
IMAGINARY関数の基本的な使い方
文字列で複素数を直接指定する
複素数文字列をそのまま引数に渡してみましょう。
=IMAGINARY("3+4i")
結果は「4」になります。「3+4i」の虚数係数である4が数値として返りますよ。
虚数係数が負の数でも、符号付きでそのまま取り出せます。
=IMAGINARY("3-4i")
結果は「-4」です。マイナス記号も含めて正しく解釈してくれますね。
セル参照で複素数を指定する
実務ではセルに入った複素数を扱う場面が多いですよね。A2に「5+2i」が入っている場合は次のように書きます。
=IMAGINARY(A2)
結果は「2」になります。セル参照を渡すだけで、入っている複素数の虚数部を取り出せますよ。
COMPLEX関数と組み合わせる
COMPLEX関数で作った複素数の虚数部を、その場で取り出すこともできます。
=IMAGINARY(COMPLEX(3, 7))
結果は「7」です。COMPLEX(3, 7)は内部で「3+7i」を作り、IMAGINARY関数がその虚数係数「7」を返してくれますね。
複素数の作成と分解を一気にやりたいときに便利な書き方ですよ。
純虚数や省略形の複素数を扱う
虚数係数が±1の場合、複素数は「i」「-i」と省略形で表記されます。IMAGINARY関数はこれもきちんと解釈してくれますよ。
| 数式 | 結果 | 説明 |
|---|---|---|
=IMAGINARY("i") | 1 | 「i」は「1i」と同じで、虚数係数は1 |
=IMAGINARY("-i") | -1 | 「-i」は「-1i」と同じで、虚数係数は-1 |
=IMAGINARY("3i") | 3 | 純虚数の場合、係数だけが返る |
=IMAGINARY("0") | 0 | 0は虚数部も0として扱われる |
=IMAGINARY(5) | 0 | 純実数を渡すと0が返る |
省略形も含めて素直に動作してくれるので、表記の揺れを気にせず使えますね。
ARRAYFORMULAで複数行を一括処理する
複素数のリストから一気に虚数部の列を作りたい場面もありますよね。そんなときはARRAYFORMULA関数(数式を範囲全体に展開する関数)と組み合わせます。
=ARRAYFORMULA(IMAGINARY(A2:A10))
A列に並んだ複素数から、対応する虚数係数をB列に一発で展開できますよ。データ整理の時短に重宝しますね。
IMAGINARY関数の実務活用例
活用例1: 複素数データの成分分離
A列に複素数のリストがあるとします。B列に実数係数、C列に虚数係数を一覧化したいときに、IMREAL関数とIMAGINARY関数のペアが活躍しますよ。
B2: =IMREAL(A2)
C2: =IMAGINARY(A2)
IMREAL関数で実数係数を取り出し、IMAGINARY関数で虚数係数を取り出します。下方向にコピーすれば、全データの成分を一括で分離できますね。
ARRAYFORMULAを使えば、コピー操作なしで一括処理も可能です。
B2: =ARRAYFORMULA(IMREAL(A2:A10))
C2: =ARRAYFORMULA(IMAGINARY(A2:A10))
複素数のテーブルを実数列と虚数列に分けたいときの定番パターンですね。
活用例2: 交流回路のインピーダンス分析
交流回路のインピーダンス(電流の流れにくさ)は「Z = R + jX」という複素数で表されます。Rは抵抗成分、Xはリアクタンス(コイルやコンデンサが生む虚数成分)ですね。
セルA2にインピーダンス「50+30j」が入っているとしましょう。
=IMAGINARY(A2)
結果は「30」になります。これがリアクタンス成分(30Ω)です。
リアクタンスの符号は回路の性質を表しますよ。値が正なら誘導性(コイルが優勢)、負なら容量性(コンデンサが優勢)と判断できますね。
さらにIMABS関数でインピーダンスの大きさを求めたり、IMARGUMENT関数で位相角を計算したりすると便利です。回路の挙動を一気に把握できますね。
活用例3: 信号処理でのフーリエ成分分析
信号処理のフーリエ変換(信号を周波数成分に分解する手法)では、変換結果が複素数で出力されます。実部は余弦成分(cos成分)、虚部は正弦成分(sin成分)に対応しますよ。
IMAGINARY関数で虚部を取り出せば、その周波数の正弦成分の強度を確認できます。IMREAL関数とペアで使えば、信号の位相特性を分析できますね。
正弦成分: =IMAGINARY(B2)
余弦成分: =IMREAL(B2)
数値計算ソフトで出した複素スペクトルをスプレッドシートに貼り付けて分析する、という流れに自然に組み込めますよ。
活用例4: 複素数演算の結果から虚部を確認する
IMSUMやIMSUBといった複素数演算関数の結果から、虚数係数だけを抜き出す使い方もあります。
=IMAGINARY(IMSUB("5+3i", "2+1i"))
結果は「2」です。内側のIMSUB関数が「(5+3i) – (2+1i) = 3+2i」を計算します。外側のIMAGINARY関数がその虚数係数「2」を返してくれますね。
複素数のまま演算したあと、虚部だけを取り出してグラフにプロットする、といった使い方ができますよ。
IMAGINARY関数とIMREAL関数の違い
複素数の係数を取り出す関数として、IMAGINARY関数とIMREAL関数はペアで使うことが多いですね。違いを整理しておきましょう。
| 関数 | 返す値 | 使用例 | 結果 |
|---|---|---|---|
| IMAGINARY | 虚数係数(b) | =IMAGINARY("3+5i") | 5 |
| IMREAL | 実数係数(a) | =IMREAL("3+5i") | 3 |
どちらも引数は「複素数」のみで、書き方は同じです。取り出す成分が違うだけですね。
複素数の絶対値(原点からの距離)を求めたいときは、IMABS関数を使います。IMABS関数は内部で「√(a² + b²)」を計算して返してくれますよ。
| 関数 | 返す値 | 数式の意味 |
|---|---|---|
| IMAGINARY | 虚数係数 b | b |
| IMREAL | 実数係数 a | a |
| IMABS | 絶対値 | √(a² + b²) |
| IMARGUMENT | 偏角(角度) | atan(b / a) |
成分の取り出しには IMAGINARY と IMREAL を使います。大きさや角度の計算には IMABS と IMARGUMENT を使うと覚えておくと迷いませんね。
IMAGINARY関数のよくあるエラーと対処法
#NUM! エラー
複素数として認識できない文字列を渡したときに発生します。虚数単位「i」「j」が含まれていないか、それ以外の文字を使っている場合が典型例ですよ。
=IMAGINARY("1+2") → #NUM!(虚数単位なし)
=IMAGINARY("3+4I") → #NUM!(大文字のIは不可)
=IMAGINARY("3+4k") → #NUM!(i・j以外は不可)
対処法は、複素数文字列を必ず「a+bi」または「a+bj」の形式にすることです。虚数単位は小文字限定なので、CapsLockがオンになっていないか確認してくださいね。
#VALUE! エラー
引数に論理値やエラー値を渡したときに発生します。
=IMAGINARY(TRUE) → #VALUE!(論理値は不可)
=IMAGINARY(#N/A) → #VALUE!(エラー値は不可)
対処法は、正しい複素数文字列または数値・セル参照を渡すことです。入力元のセルがエラーになっている場合は、そのエラーを先に解消する必要がありますよ。
0が返るのはエラーではない
実数だけを渡すと結果が「0」になりますが、これはエラーではなく正常動作です。純実数の虚数係数は0なので、数学的に正しい結果ですよ。
=IMAGINARY(5) → 0(純実数の虚数部は0)
=IMAGINARY("5") → 0(同上)
=IMAGINARY("0+0i") → 0(実数部・虚数部ともに0)
意図せず0が返る場合は、入力元のセルに虚数単位が含まれているかを確認してみてくださいね。
IFERRORでエラーを吸収する
入力データの信頼性が低い場合は、IFERROR関数(エラー時に代替値を返す関数)で包んでおくと安心です。
=IFERROR(IMAGINARY(A2), "形式エラー")
エラー時にメッセージを返すようにしておけば、シート全体の集計が止まらずに済みますよ。
IMAGINARY関数とExcelの互換性
GoogleスプレッドシートのIMAGINARY関数は、ExcelのIMAGINARY関数と仕様が完全に一致しています。構文・引数・戻り値の形式・エラー条件まで同じですよ。
ExcelファイルをGoogleスプレッドシートで開いてもIMAGINARY関数はそのまま動作します。逆にスプレッドシートで作った数式をExcelで開いても問題ありませんね。
ExcelのIMAGINARY関数は、Excel 2007以降のすべてのバージョンで利用できます。Microsoft 365、Excel for Mac、Excel Online でも同じように使えますよ。
Excel版の詳細な解説はExcelのIMAGINARY関数の使い方も参考にしてくださいね。プラットフォーム間で挙動が同じだと、ファイル共有のときにも安心です。
複素数関連の関数一覧
IMAGINARY関数と一緒に使うことが多い、複素数関連の関数をまとめました。
| 関数名 | 機能 |
|---|---|
| COMPLEX | 実数と虚数から複素数を作成する |
| IMREAL | 複素数の実数係数を返す |
| IMAGINARY | 複素数の虚数係数を返す |
| IMABS | 複素数の絶対値を返す |
| IMARGUMENT | 複素数の偏角(角度)を返す |
| IMCONJUGATE | 共役複素数を返す |
| IMSUM | 複素数の合計(足し算)を返す |
| IMSUB | 複素数の差(引き算)を返す |
| IMPRODUCT | 複素数の積(掛け算)を返す |
| IMDIV | 複素数の商(割り算)を返す |
| IMEXP | 複素数の指数関数を返す |
| IMLN | 複素数の自然対数を返す |
| IMSQRT | 複素数の平方根を返す |
IMAGINARY関数は、これら複素数関数群の中で「成分を取り出す」役割を担います。COMPLEXで作り、IMSUMやIMPRODUCTで計算してから、最後にIMAGINARYやIMREALで成分を抜くのが基本パターンですね。
まとめ
GoogleスプレッドシートのIMAGINARY関数は、複素数から虚数係数を取り出す関数です。エンジニアリング系の計算で複素数を扱うときに、欠かせない成分分離ツールになりますよ。
- 構文は
=IMAGINARY(複素数)で引数は1つだけのシンプルな関数 - 「a+bi」「a+bj」のどちらの形式も受け付ける(虚数単位は小文字のみ)
- 純実数を渡すと0が返る(エラーにはならない)
- COMPLEX関数の結果やセル参照、複素数演算の結果から虚部を取り出せる
- IMREAL関数とペアで複素数の成分分離ができる
- ARRAYFORMULAで複数の複素数を一括処理できる
- 交流回路のリアクタンス分析、フーリエ変換の正弦成分抽出などで活躍
- ExcelのIMAGINARY関数と完全互換(Excel 2007以降)
- 虚数単位なしの文字列や大文字の「I」「J」は #NUM! エラーになる
複素数の虚部だけを使った計算やグラフ化が必要になったら、IMAGINARY関数の出番ですよ。COMPLEX関数で複素数を作り、IMAGINARY関数で成分を取り出す流れで、エンジニアリング系のシートを軽快に組み立ててみてくださいね。
