「スプレッドシートで負の数の平方根を出したいのに、SQRTだとエラーになる…」
電気回路のインピーダンスや制御工学の特性方程式を扱っていると、複素数や負の数の平方根を計算したい場面が出てきますよね。実数しか受け付けない通常のSQRT関数では、-9 のような負の数を渡した瞬間に #NUM! エラーになってしまいます。
そんなときに頼りになるのがGoogleスプレッドシートのIMSQRT関数です。複素数の文字列を渡すだけで平方根を一発で返してくれるので、負の数でも複素数でもセル1つで処理できますよ。
ExcelのIMSQRT関数と完全互換なので、Excelファイルとやり取りする現場でも安心ですね。COMPLEX関数で組み立てた複素数や、ARRAYFORMULAでの一括計算にも対応しています。
この記事では、スプレッドシートのIMSQRT関数の基本構文と実務での活用例を解説します。よくあるエラーと対処法、IMPOWER関数との検算ペアパターンもしっかり紹介していきますよ。
スプレッドシートのIMSQRT関数とは?
GoogleスプレッドシートのIMSQRT関数(イマジナリー・スクエア・ルート関数)は、複素数の平方根を返す関数です。エンジニアリング関数(電気・物理・工学系の計算で使う関数群)のひとつに分類されますよ。
読み方は「イマジナリー・スクエア・ルート」または「アイエム・スクエア・ルート」で、英語の「imaginary number(虚数)」の「square root(平方根)」に由来します。複素数「a+bi」に対して、その平方根 √(a+bi) を返してくれるのが役割ですね。
そもそも複素数の平方根は、極形式 r(cosθ + i sinθ) で表すと「絶対値は√r、偏角はθ/2」というシンプルなルールで計算できます。定義式は次のようになります。
√(r(cosθ + i sinθ)) = √r × (cos(θ/2) + i sin(θ/2))
複素数の平方根は本来2つあります。たとえば 3+4i の平方根は 2+i と -2-i の2つですね。IMSQRT関数は、このうち実部が0以上の主値(principal square root)の方だけを返してくれます。
| 入力する複素数 | IMSQRTの戻り値 |
|---|---|
"-9" | "3i" |
"-4" | "2i" |
"3+4i" | "2+i" |
"5+12i" | "3+2i" |
"4" | "2" |
"0+1i" | "0.707...+0.707...i" |
IMSQRT関数を使えば、この表の右側にある「複素数の平方根」をサクッと取り出せます。Excelとの互換性も完璧で、Excel 2013以降のすべてのバージョンに対応していますよ。
複素数の平方根は、電気工学のインピーダンス計算・制御工学の特性方程式・振動解析の固有値問題など、複素数演算が必要な場面で活躍する基礎パーツですね。
IMSQRT関数とSQRT関数の違い
通常のSQRT関数は実数専用なので、負の数を渡すとエラーになります。IMSQRT関数は複素数(実数も含む)に対応しているので、負の数の平方根もスムーズに求められます。
| 関数 | 対応する数値 | 負の数を渡したとき | 戻り値の型 |
|---|---|---|---|
| SQRT | 実数のみ | #NUM! エラー | 数値 |
| IMSQRT | 複素数(実数を含む) | 虚数解を返す | 文字列 |
たとえば =SQRT(-9) はエラーになりますが、=IMSQRT("-9") は文字列 "3i" を返してくれます。負の数の平方根を扱う場面では、IMSQRT一択ですね。
こんな人におすすめ
- 電気・電子系で交流回路のインピーダンス計算をスプレッドシートで完結したい
- 制御工学の伝達関数や極・零点を表計算で検証したい
- 学校・研究で複素数を含む計算を大量に処理したい
- SQRT関数で
#NUM!エラーが出て困っている - ExcelからGoogleスプレッドシートに移行したばかりで挙動を確認したい
IMSQRT関数の書き方(構文と引数)
基本構文
IMSQRT関数の構文はとてもシンプルで、引数は1つだけです。
=IMSQRT(複素数)
引数の詳細
| 引数 | 必須/任意 | 説明 |
|---|---|---|
| 複素数(inumber) | 必須 | 平方根を求めたい複素数。"x+yi" または "x+yj" の文字列で指定する |
引数には「”3+4i”」や「”3+4j”」のような複素数文字列を直接渡せます。COMPLEX関数(実数と虚数から複素数を組み立てる関数)の結果や、複素数が入ったセルの参照も指定できますよ。
虚数単位は小文字の i または j のどちらでも受け付けます。数学では i、電気工学では j が使われる慣習ですね。IMSQRT関数はどちらでも同じように動作してくれます。
TIP
戻り値は元の入力と同じ虚数単位で返されます。「3+4i」を渡せば「2+i」、「3+4j」を渡せば「2+j」が返るので、表記の統一性も保たれますよ。
使うときに押さえておきたいポイントは、次の3点です。
- 引数は必ずダブルクォーテーションで囲んだ文字列か、複素数が入ったセル参照で渡す
- 虚数単位は
iとjの両方が使えるが、混在はNG(例:"3+4ij"のような指定はエラー) - 戻り値も文字列型の複素数(
"a+bi"形式)なので、そのまま四則演算はできない
3点目は最初につまずきやすいポイントです。戻り値をさらに計算に使いたい場合は、IMABS関数(絶対値)やIMREAL関数(実部を取り出す関数)など他のIM系関数と組み合わせる必要がありますよ。
IMSQRT関数の基本的な使い方【3パターン】
IMSQRT関数の基本パターンを3つに分けて紹介します。いずれも同じ関数ですが、入力方法によって使い勝手が変わります。
パターン1: 文字列で複素数を直接指定する
もっともシンプルなのが、関数内に直接複素数を書く方法です。
=IMSQRT("3+4i")
→ 2+i
手計算で確認すると (2+i)² = 4 + 4i + i² = 4 + 4i – 1 = 3+4i ですね。元の複素数に戻るので、計算が合っています。
負の実数だけを渡すこともできます。SQRT関数でエラーになる場合の代替として覚えておきましょう。
=IMSQRT("-9")
→ 3i
SQRT(-9) では #NUM! エラーになりますが、IMSQRTなら虚数解をきちんと返してくれますよ。
パターン2: セル参照で指定する
複素数をセルに入力しておき、別のセルでIMSQRTを呼び出す方法です。A2セルに 5+12i と入力しておき、B2セルに次の式を入れます。
=IMSQRT(A2)
→ 3+2i
複数行の複素数データをまとめて処理したいときは、このセル参照方式が便利です。オートフィルで一気に全行計算できるので、感度解析やパラメータスイープに向いています。
パターン3: COMPLEX関数と組み合わせる
実部と虚部が別々のセルに入っている場合は、COMPLEX関数で複素数を組み立ててから渡すのがおすすめです。
=IMSQRT(COMPLEX(3, 4))
→ 2+i
A2に実部、B2に虚部を入れているなら、=IMSQRT(COMPLEX(A2, B2)) と書きます。データ入力がシンプルになり、文字列の書式ミスも減らせるので、実務ではこの組み合わせが一番安定しますよ。
| パターン | 向いている場面 |
|---|---|
| 文字列で直接入力 | 単発の計算・動作確認 |
| セル参照 | 複数行のデータを一気に処理したいとき |
| COMPLEX関数との組み合わせ | 実部・虚部が別列に分かれているデータ |
ARRAYFORMULAで複素数列を一括計算する
スプレッドシートには ARRAYFORMULA 関数(数式を範囲全体に展開する関数)があり、複数行の複素数を一発で平方根に変換できます。Excelのスピル機能に相当する仕組みですね。
A2:A10 に複素数のリストが並んでいるとします。B2 に次の式を入れるだけで、B2:B10 全体に平方根が一気に展開されます。
=ARRAYFORMULA(IMSQRT(A2:A10))
オートフィルで1行ずつコピーする手間が省けるので、大量の複素数データを処理するときに便利ですよ。たとえば伝送線路の周波数スイープ計算で、各周波数のインピーダンスの平方根を一気に求めたい場面で重宝します。
TIP
ARRAYFORMULA は範囲内に1つでも不正な複素数があると、その行で
#NUM!や#VALUE!を返します。IFERRORで包んでおくと、エラー行があっても他の行の計算は止まりませんよ。
エラー対策まで仕込むなら、こんな書き方になります。
=ARRAYFORMULA(IFERROR(IMSQRT(A2:A10), "形式エラー"))
エラー時に「形式エラー」と表示されるので、どの行が原因なのかも一目でわかりますね。
IMSQRT関数の実務活用例
IMSQRT関数は学術的な関数に見えますが、実務でも使いどころがあります。代表的な3つのシーンを紹介しますね。
活用例1: 交流回路のインピーダンスの平方根
交流回路では抵抗とリアクタンス(コンデンサやコイルが交流に対して示す抵抗成分)を複素数として扱います。電気系では虚数単位として j を使うのが慣例ですね。
抵抗R = 3Ω、リアクタンスX = 4Ω のときのインピーダンスは Z = 3+4j と書けます。このZの平方根は次のように求められます。
A2: =COMPLEX(3, 4, "j") ← Z = 3+4j
B2: =IMSQRT(A2) ← √Z = 2+j
伝送線路の特性インピーダンス Z₀ = √(Z/Y) を求める場面や、共振回路の解析でインピーダンスの平方根が必要になる場面で、IMSQRT関数が一瞬で答えを出してくれます。手計算だと極形式への変換が必要な計算も、セル1つで完結するのは大きな魅力ですよね。
活用例2: 制御工学の特性方程式の解
制御系の極(ポール)や零点(ゼロ)を求める際、2次方程式の解として複素数の平方根が登場します。判別式が負になるケース(振動系で虚数解が出るケース)でも、IMSQRT関数ならそのまま処理できますね。
たとえば、特性方程式 s² + 2ζω_n s + ω_n² = 0 の解は s = -ζω_n ± ω_n√(ζ²-1) です。減衰比 ζ が1未満のときは平方根の中身が負になりますよね。
A2: 0.5 ← 減衰比 ζ
B2: 10 ← 固有角周波数 ω_n
C2: =IMSQRT(COMPLEX(A2^2-1, 0))
→ 0.866...i
判別式が負の値(ζ²-1 = -0.75)になるシーンでも、IMSQRTが虚数解を返してくれるので、SQRTのように #NUM! エラーで止まりません。スプレッドシートで感度解析やパラメータスイープをするなら、IMSQRTで解析式をそのままセルに落とし込めますよ。
活用例3: IMPOWERとのペアで検算する
手計算で求めた複素数の平方根が合っているかを確認したいときも、IMSQRTが便利です。IMPOWER関数(複素数のべき乗を求める関数)と組み合わせれば、検算の精度をさらに上げられますね。
IMSQRTで求めた平方根をIMPOWERで2乗して、元の値に戻るかを確認する流れです。
=IMPOWER(IMSQRT("3+4i"), 2)
→ 3+4i(元の値に戻る)
=IMPOWER(IMSQRT("-4+6i"), 2)
→ -4+6i(元の値に戻る)
数値誤差で末尾の桁が微妙にずれることはありますが、ROUND関数で丸めれば見た目もきれいになります。学習用シートや、計算結果のクロスチェックに使えるパターンですよ。
IMSQRT関数と一緒に覚えたい複素数関数
IMSQRT単体でも十分便利ですが、他の複素数関数(IM〜で始まる関数群)と組み合わせるとスプレッドシートで本格的な複素数計算ができるようになります。
| 関数 | 機能 | IMSQRTとの典型的な組み合わせ |
|---|---|---|
| COMPLEX | 実部・虚部から複素数を作成 | IMSQRTへの入力作成 |
| IMPOWER | 複素数のべき乗 | IMSQRTの逆演算で検証 |
| IMPRODUCT | 複素数の積 | 複数の複素数の積の平方根 |
| IMSUM | 複素数の和 | =IMSQRT(IMSUM(Z1, Z2)) |
| IMABS | 複素数の絶対値(実数) | 戻り値を実数に変換して丸める |
| IMREAL | 複素数の実部を取り出す | 戻り値の実部だけを使う計算 |
| IMAGINARY | 複素数の虚部を取り出す | 戻り値の虚部だけを使う計算 |
| IMARGUMENT | 複素数の偏角(ラジアン) | 極形式での確認 |
たとえば =IMREAL(IMSQRT("3+4i")) で実部だけ、=IMAGINARY(IMSQRT("3+4i")) で虚部だけを数値として取り出せます。戻り値が文字列で扱いにくいときは、この2関数で分解してから続きの計算をするのが定石ですよ。
複素数のsec(正割)やsech(双曲正割)など、より高度な三角関数を扱いたい場面では、IMSEC関数やIMSECH関数も合わせて確認してみてくださいね。
IMSQRT関数のよくあるエラーと対処法
IMSQRT関数で遭遇しやすいエラーと、その原因・対処法をまとめました。
| エラー | 主な原因 | 対処法 |
|---|---|---|
#NUM! | 虚数単位 i と j の混在、大文字 I・J、全角文字、不正な複素数形式 | 形式を x+yi か x+yj のいずれかに統一する |
#VALUE! | 引数が複素数として解釈できない文字列(全角や空白混入など) | 半角で入力し、余計な空白を削除する |
| 意図しない結果 | セル参照先が単なる数値で虚部が認識されていない | COMPLEX関数で明示的に複素数化する |
#NAME? | 関数名のスペルミス(IMSQRT以外の綴り) | 関数名のスペルを確認する |
#NUM! エラー(虚数単位の混在・大文字・全角)
複素数として認識できない文字列を渡したときに発生します。よくあるパターンは次のとおりです。
=IMSQRT("3+4I") → #NUM!(大文字のIは不可)
=IMSQRT("3+4ij") → #NUM!(i・j混在は不可)
=IMSQRT("3+4i") → #NUM!(全角数字は不可)
=IMSQRT("3+4k") → #NUM!(i・j以外の文字は不可)
対処法は、複素数文字列を必ず半角の a+bi または a+bj の形式にすることです。虚数単位は小文字限定なので、CapsLock がオンになっていないか確認してくださいね。
#VALUE! エラー(型エラー・全角空白)
スペースが入っている場合(例: "3 + 4i")や、数値型のセルから複素数として解釈できない値を渡した場合に発生します。
=IMSQRT("3 + 4i") → #VALUE!(半角空白が入っているとNG)
=IMSQRT(TRUE) → #VALUE!(論理値は不可)
Webサイトや論文PDFからコピペで入力した場合は、全角記号や余計な空白が混入していないか必ず確認しましょう。見た目が似ているので気づきにくいですが、スプレッドシートは半角文字しか複素数の要素として認識してくれませんよ。
戻り値が文字列で計算できない問題
IMSQRT関数のもう1つの落とし穴が、戻り値の型です。結果は見た目が数字でも文字列なので、=IMSQRT("4")+1 のような計算を書くと #VALUE! エラーになります。
戻り値を数値として扱いたいときは、IMREAL関数(実部を数値で返す)かIMABS関数(絶対値を数値で返す)で一度実数に変換してから計算してくださいね。
=IMREAL(IMSQRT("4")) + 1
→ 3(数値として計算できる)
=ROUND(IMABS(IMSQRT("3+4i")), 4)
→ 2.2361(絶対値を4桁で丸める)
虚部だけ取り出したいときは IMAGINARY関数を使います。3つの関数(IMREAL・IMAGINARY・IMABS)を覚えておくと、戻り値が文字列でも困らなくなりますよ。
ExcelのIMSQRT関数との違いと互換性
GoogleスプレッドシートのIMSQRT関数は、ExcelのIMSQRT関数と仕様が完全に一致しています。構文・引数・戻り値の形式・エラー条件まで同じですよ。
ExcelファイルをGoogleスプレッドシートで開いてもIMSQRT関数はそのまま動作します。逆にスプレッドシートで作った数式をExcelで開いても問題ありませんね。
| 項目 | スプレッドシート | Excel |
|---|---|---|
| 構文 | =IMSQRT(複素数) | =IMSQRT(複素数) |
| 戻り値の型 | 文字列 | 文字列 |
| 虚数単位 | i または j | i または j |
| 一括計算 | ARRAYFORMULA | スピル(Microsoft 365)/ Ctrl+Shift+Enter |
| 対応バージョン | 全バージョン | Excel 2013以降・Microsoft 365 |
スプレッドシート固有の差は ARRAYFORMULA で配列展開する点くらいですね。Excelの場合はMicrosoft 365のスピル機能、または旧バージョンでは Ctrl+Shift+Enter で配列数式として確定する形になります。
両方を行き来する環境なら、関数の挙動はほぼ同じと考えて大丈夫ですよ。詳しいExcel版の解説はExcelのIMSQRT関数の使い方も参考にしてみてくださいね。
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. ExcelファイルをGoogleスプレッドシートで開いても動きますか?
A. はい、動きます。IMSQRT関数は両方のプラットフォームで完全互換なので、.xlsx ファイルを Sheets で開いた場合でも、関数の結果はそのまま反映されますよ。
Q. 虚数単位に i と j はどちらを使えばいいですか?
A. 数学・物理系の慣例では i、電気・制御系の慣例では j が使われます。どちらもIMSQRTは受け付けますが、同じブック内では統一したほうが混乱がありません。セル参照で計算を連結する場合、片方は i・もう片方は j だと #NUM! エラーになりますよ。
Q. 平方根の負の解(マイナス側)も取り出せますか?
A. IMSQRT関数は主値(実部 ≥ 0 の方)だけを返すので、もう一つの解(マイナス側)は直接は取り出せません。ただし、平方根の2つの解は符号が反転するだけなので、IMSQRTの結果に -1 を掛ければ求められますよ。
A2: =IMSQRT("3+4i") ← 主値 2+i
B2: =IMPRODUCT(A2, "-1") ← もう一つの解 -2-i
IMPRODUCT関数で -1 を掛けると、複素数全体の符号が反転します。
まとめ
GoogleスプレッドシートのIMSQRT関数は、複素数の平方根を一発で返してくれる便利なエンジニアリング関数です。ポイントをおさらいしておきましょう。
- 構文は
=IMSQRT(複素数)で引数は1つだけ - 引数は
"x+yi"または"x+yj"の文字列か、複素数が入ったセル参照で渡す - SQRT関数がエラーになる負の数も、IMSQRTなら虚数解として処理できる
- 主値(実部 ≥ 0 の方)だけを返す。もう一つの解は -1 倍で取り出せる
- 虚数単位
iとjは混在させず、ブック内で統一する - 戻り値は文字列型なので、さらに計算を続けるなら IMREAL・IMABS・IMAGINARY 関数と組み合わせる
- 実部・虚部が別セルにあるときは COMPLEX 関数で組み立ててから渡すと扱いやすい
- ARRAYFORMULA で複数行の複素数を一括処理できる
- IMPOWER 関数で2乗すれば、元の複素数に戻るかを検算できる
- 大文字の
I・J、全角文字、i・j混在は#NUM!エラー - 半角空白の混入や論理値の引数は
#VALUE!エラー - ExcelのIMSQRT関数と完全互換(Excel 2013以降)
交流回路や制御工学の計算を手作業でやっていた方は、ぜひスプレッドシートにIMSQRT関数を組み込んで作業時間を短縮してみてくださいね。複素数関連の他の関数(COMPLEX・IMPOWER・IMABS など)とセットで覚えておくと、さらに応用が広がりますよ。
