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