IMPRODUCT関数の使い方|Excelで複素数のかけ算を一発で計算する

スポンサーリンク

電気工学や制御工学、信号処理などで登場する複素数の掛け算を、Excel上でそのまま計算したい場面はありますよね。普通のアスタリスク演算子(*)では "3+4i" のような文字列を複素数として掛け合わせることはできず、#VALUE!エラーになってしまいます。手計算でも符号ミスや虚数単位の処理でつまずきがちです。

この記事では、ExcelのIMPRODUCT関数の構文・引数から、使い方の4パターン、実務での活用シーン、つまずきやすいエラーと対処法まで、まとめて解説します。

ExcelのIMPRODUCT関数とは?複素数の積を返す関数

IMPRODUCT関数は、"x+yi" または "x+yj" の形式で指定した複素数どうしの積(かけ算)を返すエンジニアリング関数です。読み方は「イマジナリー・プロダクト関数」で、Excel 2013 以降のバージョンおよびMicrosoft 365で使用できます。Googleスプレッドシートでも同じ構文で動作します。

数学的には、複素数のかけ算は (a+bi) × (c+di) = (ac - bd) + (ad + bc)i という展開式で計算します。手作業だと虚数単位の2乗(i² = -1)を忘れたり符号を取り違えたりしがちですが、IMPRODUCT関数に任せれば一瞬で正しい結果が得られますよ。

複素数の入力値は、COMPLEX関数 を使って実数係数と虚数係数から生成するのが一般的です。IMPRODUCTはそのCOMPLEX関数とセットで使うと真価を発揮します。

PRODUCT関数とIMPRODUCT関数の違い

PRODUCTとIMPRODUCTは名前が似ていますが、扱えるデータ型がまったく違います。

関数対象複素数の文字列を渡すと
PRODUCT数値のみ#VALUE! エラー
IMPRODUCT複素数(テキスト文字列)正常に積を返す

たとえば =PRODUCT("3+4i","-4+6i") はエラーになりますが、=IMPRODUCT("3+4i","-4+6i")"-36+2i" を正しく返します。複素数の掛け算には必ずIMPRODUCTを使ってください。

IMPRODUCT関数の構文と引数

IMPRODUCT関数の基本構文はシンプルです。

=IMPRODUCT(複素数1, [複素数2], …)

[ ] で囲まれた引数は省略可能です。

引数必須説明
複素数1必須積を求めたい1つ目の複素数("x+yi" または "x+yj" 形式)
複素数2以降任意追加で掛け合わせたい複素数。最大255個まで指定可

引数:複素数(inumber)

積を求めたい複素数を、"x+yi" または "x+yj" のテキスト文字列で指定します。ここで x が実部、y が虚部です。虚数単位は必ず小文字の i または j を使ってください。大文字の IJ を入れるとエラーになります。

整数や実数もそのまま引数として渡せます。たとえば 55+0i として処理されるので、実数の係数を複素数に掛けたいときにもそのまま使えますよ。

戻り値もテキスト文字列として返ります。さらに別の計算に使いたい場合は、IMREAL関数IMAGINARY関数 で実部・虚部を取り出しましょう。IMABS関数 で絶対値(大きさ)に変換することもできます。

IMPRODUCT関数の使い方【4パターン】

実際の使い方を、よくあるパターンで見ていきましょう。

パターン1:関数内に複素数を直接入力する

一番シンプルな書き方は、複素数の文字列を直接引数に入れる方法です。

=IMPRODUCT("3+4i","-4+6i")-36+2i

計算の内訳は (3+4i) × (-4+6i) = -12 + 18i - 16i + 24i² = -12 + 2i - 24 = -36 + 2i です。手計算だと符号ミスをしがちですが、IMPRODUCTに任せれば一瞬ですよ。実数と複素数を混ぜた書き方も可能です。

=IMPRODUCT("3+4i", 5)15+20i

パターン2:セル参照で複数の複素数を掛け合わせる

実務ではセル参照を使うケースがほとんどです。A1セルに "2+3i"、A2セルに "1-1i"、A3セルに "4+0i" が入っていれば、次のように書けます。

=IMPRODUCT(A1, A2, A3)20+4i

3つ以上の複素数をまとめて掛け合わせられるので、段階的な合成計算を1セルに集約できます。計算対象を表にまとめておけば、後から値を差し替えても数式を書き換える必要がありません。

パターン3:範囲指定で一括して積を求める

複素数を縦にズラッと並べたデータの積は、範囲指定がもっとも効率的です。

=IMPRODUCT(A1:A10) → A1からA10の10個の複素数を一括して掛け合わせる

PRODUCT関数と同じ感覚でセル範囲を渡せるので、測定データが何十行あっても数式はこれ1本で済みます。IMPRODUCTの引数は最大255個までですが、セル範囲で渡せばその上限を超えるデータも掛け合わせ可能です。大量データを扱うときは必ず範囲指定を使ってください。

ただし積は値が急激に大きく(または小さく)なりやすいので、範囲指定で連鎖させる前に各要素の大きさをIMABSで確認しておくと安心ですよ。

パターン4:COMPLEX関数と組み合わせる

実部と虚部が別々のセルに入っているときは、COMPLEX関数 で合成してからIMPRODUCTに渡します。A列に実部、B列に虚部を入力したデータシートでは、こう書けますよ。

=IMPRODUCT(COMPLEX(A1,B1), COMPLEX(A2,B2))

エンジニアリング分野では実部と虚部を別カラムで管理することが多いので、この組み合わせが一番実務的です。列数が多くなる場合は、C列にあらかじめ =COMPLEX(A1,B1) で複素数文字列を作っておき、最後にIMPRODUCTで範囲指定するほうが見通しよく組めますよ。

IMPRODUCT関数が役立つ実務シーン

IMPRODUCT関数は、複素数の掛け算を扱う理工系の現場ではさまざまな場面で登場します。代表的な活用シーンを紹介します。

電気工学:合成インピーダンスと電圧降下の計算

交流回路では、電圧 V = 電流 I × インピーダンス Z の関係が複素数のまま成り立ちます。電流と素子インピーダンスをそれぞれ複素数で持っておけば、=IMPRODUCT(I_cell, Z_cell) で素子両端の電圧降下がそのまま求まりますよ。抵抗・コイル・コンデンサが混在した回路のシミュレーションも、IMPRODUCTとIMSUMを組み合わせれば一枚のシートで完結します。

信号処理・フィルタ設計:伝達関数の合成

縦続接続されたフィルタの伝達関数は、各段の伝達関数の積で表せます。特定の周波数における各段の複素ゲインを並べて =IMPRODUCT(A1:A5) のように範囲指定すれば、全体の伝達特性が一発で求まります。ボード線図の手計算検算にも便利です。

制御工学:周波数応答の評価

周波数応答の計算では、分子と分母に複素数の積が大量に出てきます。分子側の複素数列、分母側の複素数列をそれぞれIMPRODUCTで畳み込み、最後に IMDIV関数 で割り算すると、設計レビュー用のクイックチェックが数式1本でできますよ。

複素数の累乗:自乗・3乗の計算

同じ複素数を複数回掛け合わせる場合にも使えます。=IMPRODUCT("3+4i","3+4i") のように書けば自乗が得られますし、3乗なら3回指定すればOKです。べき乗が主目的なら IMPOWER関数 のほうが意図が明確ですが、IMPRODUCTでも等価な結果を出せます。

いずれの場面でも、実部と虚部を分けて掛け算するよりIMPRODUCTを使ったほうが数式がスッキリして、計算ミスも減らせますよ。

よくあるエラーと対処法

IMPRODUCT関数でつまずきやすいエラーをまとめます。

#NUM! エラー

複素数の書式が正しくないときに出ます。もっとも多いのが スペースの混入 で、"3 + 4i" のように演算子の前後に半角スペースが入っているとNGです。"3+4i" のように詰めて書いてください。

また、"3+4"(虚数単位なし)や "3,4i"(カンマ区切り)といった独自書式もエラーになります。実部と虚部の符号は必ず + または - で明示しましょう。全角の が混ざっているケースも頻出なので、外部からコピーしたデータはASC関数で半角化しておくと安全ですよ。

#VALUE! エラー

参照先のセルが空だったり、複素数の係数に数値以外の文字が混ざっていたりすると発生します。また、虚数単位に大文字の IJ を使った場合や、全角の が混入している場合もこのエラーになりますよ。

エラーが出たら、まずセルの中身をコピーしてメモ帳などに貼り付け、見えない文字が入っていないか確認してみてください。

i と j の混在

同じ数式の中で i を使う複素数と j を使う複素数を混ぜると、#NUM! エラーになります。データセット全体でどちらかに統一してから、IMPRODUCTに渡してください。既存データを一括変換したい場合は、SUBSTITUTE関数ji に置き換える前処理を挟むと楽ですよ。

IMPRODUCT関数に関するよくある質問

Q. PRODUCT関数で複素数を掛け算できないのはなぜですか?

PRODUCT関数は数値型を対象としており、"3+4i" のような文字列型の複素数は計算対象外です。複素数の文字列を渡すと #VALUE! エラーになります。IMPRODUCT関数は文字列型の複素数に対応した専用関数なので、必ずこちらを使ってください。

Q. Googleスプレッドシートでも使えますか?

はい。Googleスプレッドシートでも =IMPRODUCT("3+4i","2-1i") と書けば同様に動作します。構文は完全に互換です。

Q. 複素数の2乗や3乗を求めたいときはどうすれば?

=IMPRODUCT("3+4i","3+4i") のように同じ複素数を2つ指定すれば自乗になります。ただし、べき乗を主目的にするなら IMPOWER関数 のほうが =IMPOWER("3+4i",2) と書けて意図が明確です。用途で使い分けてください。

Q. 255個以上の複素数を掛け合わせたい場合は?

IMPRODUCT関数は引数を最大255個まで受け付けますが、セル範囲(例:A1:A1000)で指定すればその上限を超えるデータも一括で掛け合わせできます。大量データは必ず範囲指定で渡しましょう。

Q. 戻り値をそのまま四則演算に使えますか?

戻り値は文字列型なので、直接数値計算には使えません。実数として使いたい場合は IMREAL・IMAGINARY で実部・虚部を取り出すか、IMABS で絶対値に変換してください。複素数のまま演算したいときは、IMSUM・IMSUB・IMDIV などの「IM系演算関数」を使いましょう。

関連する複素数関数

IMPRODUCT関数と一緒に使われることが多い複素数関数も押さえておきましょう。

まずはCOMPLEXで複素数を作成し、IMSUM・IMSUB・IMPRODUCT・IMDIVで計算、最後にIMREAL・IMAGINARYで結果を分解する、というのが基本の流れです。四則演算系(IMSUM・IMSUB・IMPRODUCT・IMDIV)を一通り押さえておけば、複素数計算はほぼ自動化できます。

まとめ

ExcelのIMPRODUCT関数は、複素数の積(かけ算)を一発で求められる便利なエンジニアリング関数です。最後にポイントを整理しておきます。

  • 構文は =IMPRODUCT(複素数1, [複素数2], ...) で、最大255個まで引数指定できる
  • 複素数は "x+yi" または "x+yj" の文字列で指定する
  • 虚数単位は必ず小文字の i または j を使い、同じ数式内で混在させない
  • セル範囲で指定すれば255個を超える大量データも一括で掛け合わせできる
  • 電気工学のインピーダンス計算や信号処理の伝達関数合成など、理工系の実務で活躍する
  • COMPLEX・IMSUM・IMSUB・IMDIV・IMPOWERとセットで覚えると複素数演算がスムーズになる

手計算で符号ミスに消耗していた複素数の掛け算も、IMPRODUCT関数を使えば一瞬で終わります。理系部署のサポート業務をしている方は、ブックマークしておくと安心ですよ。

タイトルとURLをコピーしました