電気回路のインピーダンス計算や制御工学の伝達関数で「負の数の平方根」「複素数の平方根」を扱いたい場面は意外と多いですよね。手計算で極形式に変換して…とやるのは面倒ですが、ExcelのIMSQRT関数を使えばセル1つで一瞬です。
通常のSQRT関数は実数しか扱えず、負の数を渡すと#NUM!エラーになります。一方、ExcelのIMSQRT関数なら負の実数や複素数もそのまま処理でき、結果も複素数形式の文字列で返してくれますよ。
この記事では、ExcelのIMSQRT関数の構文から3つの基本的な使い方、電気・制御工学での実務活用例、よくあるエラーの対処法までまとめて解説します。読み終わるころには、複素数を含む計算をExcelだけで完結できるようになっていますよ。
ExcelのIMSQRT関数とは?複素数の平方根を返すエンジニアリング関数
IMSQRT関数は、x+yiまたはx+yjの形式で指定した複素数の平方根を返すExcelの関数です。読み方は「イマジナリー・スクエア・ルート関数」。Excelのエンジニアリング関数カテゴリに分類され、電気回路・制御工学・振動解析など、複素数を扱う現場で活躍します。
対応バージョンはExcel 2013以降とMicrosoft 365です。Googleスプレッドシートでも同じ構文で使えるので、環境を問わず活用できますよ。
IMSQRT関数とSQRT関数の違い
SQRT関数は実数専用なので、負の数を渡すとエラーになります。IMSQRT関数は複素数(実数も含む)に対応しているので、負の数の平方根もスムーズに求められます。
| 関数 | 対応する数値 | 負の数を渡したとき | 戻り値の型 |
|---|---|---|---|
| SQRT | 実数のみ | #NUM!エラー | 数値 |
| IMSQRT | 複素数(実数を含む) | 虚数解を返す | 文字列 |
たとえば=SQRT(-9)はエラーになりますが、=IMSQRT("-9")は文字列"3i"を返してくれます。負の数の平方根を扱う場面では、IMSQRT一択ですね。
こんな人におすすめ
- 電気・電子系で交流回路のインピーダンス計算をExcelで済ませたい
- 制御工学の伝達関数や極・零点を表計算で検証したい
- 学校・研究で複素数を含む計算を大量に処理したい
- SQRT関数で
#NUM!エラーが出て困っている
IMSQRT関数の構文と引数
IMSQRT関数の構文はとてもシンプルで、引数は1つだけです。
=IMSQRT(複素数)
| 引数 | 必須/省略可 | 内容 |
|---|---|---|
| 複素数 | 必須 | 平方根を求めたい複素数を"x+yi"または"x+yj"の文字列で指定 |
使うときに押さえておきたいポイントは、次の3点です。
- 引数は必ずダブルクォーテーションで囲んだ文字列か、複素数が入ったセル参照で渡す
- 虚数単位は
iとjの両方が使えるが、混在はNG(3+4ijのような指定はエラー) - 戻り値も文字列型の複素数(
"a+bi"形式)なので、そのまま四則演算はできない
3点目は最初につまずきやすいポイントです。戻り値をさらに計算に使いたい場合は、IMABS関数やIMREAL関数など他のIM系関数と組み合わせる必要がありますよ。
IMSQRT関数の基本的な使い方【3パターン】
IMSQRT関数の基本パターンを3つに分けて紹介します。いずれも同じ関数ですが、入力方法によって使い勝手が変わります。
パターン1: 直接複素数を入力する
もっともシンプルなのが、関数内に直接複素数を書く方法です。
=IMSQRT("-4+6i")
→ 1.26217784630132+2.37687561722027i
結果の小数桁が多くて見づらい場合は、IMABS関数で絶対値(実数)に変換してからROUND関数で丸めると読みやすくなります。
=ROUND(IMABS(IMSQRT("-4+6i")), 4)
→ 2.7080
負の実数だけを渡すこともできます。SQRT関数でエラーになる場合の代替として覚えておきましょう。
=IMSQRT("-9")
→ 3i
SQRT(-9)では#NUM!エラーになりますが、IMSQRTなら虚数解をきちんと返してくれますよ。
パターン2: セル参照で指定する
複素数をセルに入力しておき、別のセルでIMSQRTを呼び出す方法です。A1セルに3+4iと入力しておき、B1セルに次の式を入れます。
=IMSQRT(A1)
→ 2+i
複数行の複素数データをまとめて処理したいときは、このセル参照方式が便利です。オートフィルで一気に全行計算できるので、感度解析やパラメータスイープに向いています。
パターン3: COMPLEX関数と組み合わせる
実部と虚部が別々のセルに入っている場合は、COMPLEX関数(実部と虚部から複素数を組み立てる関数)で複素数を作ってから渡すのがおすすめです。
=IMSQRT(COMPLEX(A1, B1))
A1に実部、B1に虚部を入れておくだけで、IMSQRTが自動的に平方根を返してくれます。データ入力がシンプルになり、文字列の書式ミスも減らせるので、実務ではこの組み合わせが一番安定しますよ。
| パターン | 向いている場面 |
|---|---|
| 直接入力 | 単発の計算・動作確認 |
| セル参照 | 複数行のデータを一気に処理したいとき |
| COMPLEX関数との組み合わせ | 実部・虚部が別列に分かれているデータ |
実務でのIMSQRT関数の活用シーン
IMSQRT関数は学術的な関数に見えますが、実務でも使いどころがあります。代表的な3つのシーンを紹介しますね。
交流回路のインピーダンス計算
交流回路では抵抗とリアクタンスを複素数として扱います。電気系では虚数単位としてjを使うのが慣例なので、たとえば抵抗R = 3Ω、リアクタンスX = 4ΩのときのインピーダンスはZ = 3+4jと書けます。
=IMSQRT("3+4j")
→ 2+j
伝送線路の特性インピーダンスZ₀ = √(Z/Y)を求める場面や、共振回路の解析でインピーダンスの平方根が必要になる場面で、IMSQRT関数が一瞬で答えを出してくれます。手計算だと極形式への変換が必要な計算も、セル1つで完結するのは大きな魅力ですよね。
制御工学の伝達関数の解析
制御系の極(ポール)や零点(ゼロ)を求める際、2次方程式の解として複素数の平方根が登場します。判別式が負になるケース(振動系で虚数解が出るケース)でも、IMSQRT関数ならそのまま処理できます。
たとえば、特性方程式s² + 2ζω_n s + ω_n² = 0の解はs = -ζω_n ± ω_n√(ζ²-1)ですが、減衰比ζが1未満のときは平方根の中身が負になりますよね。Excelで感度解析やパラメータスイープをするなら、IMSQRTで解析式をそのままセルに落とし込めるので、複素数専用の計算ソフトを立ち上げる手間が省けます。
学習・研究用途での検算
手計算で求めた複素数の平方根が合っているかを確認したいときにも便利です。IMSQRTの結果と突き合わせれば、符号の取り違えや計算ミスをすぐ発見できます。
IMPOWER関数(複素数のべき乗を求める関数)と組み合わせれば、検算の精度もさらに上げられます。IMSQRTで求めた平方根をIMPOWERで2乗して、元の値に戻るかを確認する流れですね。
=IMPOWER(IMSQRT("-4+6i"), 2)
→ -4+6i(元の値に戻る)
IMSQRT関数と一緒に覚えたい複素数関数
IMSQRT単体でも十分便利ですが、他の複素数関数(IM〜で始まる関数群)と組み合わせるとExcelで本格的な複素数計算ができるようになります。
| 関数 | 機能 | IMSQRTとの典型的な組み合わせ |
|---|---|---|
| COMPLEX | 実部・虚部から複素数を作成 | IMSQRTへの入力作成 |
| IMPOWER | 複素数のべき乗 | IMSQRTの逆演算で検証 |
| IMPRODUCT | 複素数の積 | 複数の複素数の積の平方根 |
| IMSUM | 複素数の和 | =IMSQRT(IMSUM(Z1, Z2)) |
| IMABS | 複素数の絶対値(実数) | 戻り値を実数に変換して丸める |
| IMREAL | 複素数の実部を取り出す | 戻り値の実部だけを使う計算 |
| IMAGINARY | 複素数の虚部を取り出す | 戻り値の虚部だけを使う計算 |
| IMARGUMENT | 複素数の偏角(ラジアン) | 極形式での確認 |
たとえば、=IMREAL(IMSQRT("3+4i"))で実部だけ、=IMAGINARY(IMSQRT("3+4i"))で虚部だけを数値として取り出せます。戻り値が文字列で扱いにくいときは、この2関数で分解してから続きの計算をするのが定石ですよ。
IMSQRT関数でよく起きるエラーと対処法
IMSQRT関数で遭遇しやすいエラーと、その原因・対処法をまとめました。
| エラー | 主な原因 | 対処法 |
|---|---|---|
#NUM! | 虚数単位iとjが混在している、または複素数の形式が不正 | 形式をx+yiかx+yjのいずれかに統一する |
#VALUE! | 引数が複素数として解釈できない文字列(全角や空白混入など) | 半角で入力し、余計な空白を削除する |
| 意図しない結果 | セル参照先が単なる数値で虚部が認識されていない | COMPLEX関数で明示的に複素数化する |
#NAME? | 関数名のスペルミス(IMSQRT以外の綴り) | 関数名のスペルを確認する |
とくに多いのが全角文字の混入
実際につまずきやすいのが、全角文字の混入です。全角のi(虚数単位)、全角の+、大文字のIやJ、全角のマイナス記号などが紛れ込んでいるとエラーになります。
Webサイトや論文PDFからコピペで入力した場合は、全角記号が混入していないか必ず確認しましょう。見た目が似ているので気づきにくいですが、ExcelはJIS X 0201の半角文字しか複素数の要素として認識してくれませんよ。
IMSQRT関数のTIP: 戻り値が文字列であることを忘れない
IMSQRT関数のもう1つの落とし穴が、戻り値の型です。結果は見た目が数字でも文字列なので、=IMSQRT("4")+1のような計算を書くと#VALUE!エラーになります。
戻り値を数値として扱いたいときは、IMREAL関数(実部を数値で返す)かIMABS関数(絶対値を数値で返す)で一度実数に変換してから計算してくださいね。
IMSQRT関数に関するよくある質問
Q. IMSQRT関数は実数(普通の数)にも使えますか?
A. はい、使えます。=IMSQRT("4")は文字列"2"を返します。ただし戻り値は文字列型なので、引き続き実数として計算するにはIMREAL関数で実部を取り出してください。
=IMREAL(IMSQRT("4"))
→ 2(数値)
Q. 戻り値の小数が長くて見づらいです
A. IMABS関数で絶対値(実数)に変換してからROUND関数で丸めるか、IMREAL関数・IMAGINARY関数で実部・虚部を取り出してそれぞれ丸めましょう。
=ROUND(IMREAL(IMSQRT("1+i")), 4)
→ 1.0987
=ROUND(IMAGINARY(IMSQRT("1+i")), 4)
→ 0.4551
Q. Googleスプレッドシートでも同じ使い方で動きますか?
A. はい、Googleスプレッドシートでも=IMSQRT("3+4i")と書けば同じように動作します。構文は完全に互換なので、ExcelとGoogleスプレッドシートを行き来する環境でも安心ですよ。
Q. 虚数単位にiとjはどちらを使えばいいですか?
A. 数学・物理系の慣例ではi、電気・制御系の慣例ではjが使われます。どちらもIMSQRTは受け付けますが、同じブック内では統一したほうが混乱がありません。セル参照で計算を連結する場合、片方はi・もう片方はjだと#NUM!エラーになりますよ。
Q. IMSQRT関数で配列数式は使えますか?
A. Microsoft 365のスピル対応バージョンなら、=IMSQRT(A2:A10)のように範囲指定で一括計算できます。旧バージョンではオートフィルで対応してください。
まとめ
IMSQRT関数は、=IMSQRT(複素数)という短い式で複素数の平方根を返してくれる便利なエンジニアリング関数です。ポイントをおさらいしておきましょう。
- 引数は
"x+yi"または"x+yj"の文字列か、複素数が入ったセル参照で渡す - SQRT関数がエラーになる負の数も、IMSQRTなら虚数解として処理できる
- 虚数単位
iとjは混在させず、ブック内で統一する - 戻り値は文字列型なので、さらに計算を続けるならIMREAL・IMABS・IMAGINARY関数と組み合わせる
- 実部・虚部が別セルにあるときはCOMPLEX関数で組み立ててから渡すと扱いやすい
- 全角文字の混入が
#NUM!エラーの最頻出原因
交流回路や制御工学の計算を手作業でやっていた方は、ぜひExcelにIMSQRT関数を組み込んで作業時間を短縮してみてくださいね。複素数関連の他の関数(COMPLEX・IMPOWER・IMABSなど)とセットで覚えておくと、さらに応用が広がりますよ。
