電気回路や信号処理の解析では、複素数(実部と虚部を持つ数)の足し算が頻繁に登場します。
しかし「(2+3i) + (4+5i)」のような計算を、何個も手作業で行うのはかなりの負担ですよね。
実部と虚部を分けて足す必要があるため、ミスも起きやすく時間もかかります。
そこで便利なのが、スプレッドシートのIMSUM関数です。
複素数の和を一発で求められるうえ、最大255個の値やセル範囲もまとめて指定できます。
この記事では、IMSUM関数の構文や4パターンの使い方を解説します。さらにARRAYFORMULA連携やエラー対処法まで、実例つきで紹介しますよ。
スプレッドシートのIMSUM関数とは?
IMSUM関数(アイエムサム関数)は、Googleスプレッドシートで複素数の和を計算するエンジニアリング関数です。
「IM」は虚数(Imaginary Number)の頭文字で、複素数演算をまとめたIM系シリーズのひとつです。
通常のSUM関数は実数しか扱えませんが、IMSUM関数は「a+bi」形式の複素数文字列をそのまま足し合わせられます。
実部と虚部を自動で分離して加算してくれるため、自分で書式を分解する必要がありません。
電気回路のインピーダンス合成や、フェーザ(複素数で表した交流量)の加算など、理工系の実務で重宝する関数ですよ。
IMSUM関数と通常のSUM関数の違い(比較表)
| 項目 | SUM関数 | IMSUM関数 |
|---|---|---|
| 対象データ | 実数(数値) | 複素数(”a+bi”形式の文字列) |
| 引数の型 | 数値・セル範囲 | 複素数文字列・セル範囲・実数 |
| 戻り値 | 数値 | 複素数文字列 |
| 虚数単位 | 非対応 | i または j(混在不可) |
| 主な用途 | 売上集計など実数の合計 | インピーダンス合成・信号処理 |
複素数とは?(基礎知識ミニコラム)
複素数とは、実部と虚部を組み合わせた「a+bi」形式の数のことです。
ここで i は虚数単位(i² = -1 となる数)で、電気工学では「j」を使うことも多いです。
複素数の足し算は、実部同士・虚部同士をそれぞれ独立に足すだけのシンプルな演算です。
数式で書くと (a+bi)+(c+di) = (a+c)+(b+d)i となります。
IMSUM関数はこの計算を内部で自動処理してくれるため、書式を意識せずに足し算できますよ。
IMSUM関数の書き方(構文と引数)
IMSUM関数の構文は次のとおりです。
=IMSUM(値1, [値2, ...])
引数1は必須、引数2以降はオプションで、複素数文字列・セル範囲・実数のいずれも受け付けます。
引数の数は最大255個(必須1個+オプション最大254個)まで指定できます。
セル範囲を1つの引数として渡せば、254個の上限を実質的に超えた大量データも集計可能です。
構文:IMSUM(値1, [値2, …])
| 引数 | 必須 | 説明 |
|---|---|---|
| 値1 | 必須 | 合計する最初の複素数またはセル範囲 |
| 値2… | 任意 | 追加の複素数またはセル範囲(最大254個) |
複素数文字列は、引用符で囲んで渡します(例: "3+4i")。
実数だけを渡すこともでき、その場合は実部のみの値として処理されます。
引数の指定ルールと注意点(i/jサフィックス統一)
IMSUM関数では、虚数単位を「i」と「j」のどちらでも指定できます。
ただし、ひとつの式の中で i と j を混ぜることは不可です。
=IMSUM("4+3i", "1+2j") // → エラー(混在NG)
=IMSUM("4+3i", "1+2i") // → OK
=IMSUM("4+3j", "1+2j") // → OK
データソースで i と j が混在している場合は、後述のSUBSTITUTE関数で統一してから渡してくださいね。
IMSUM関数の基本的な使い方【4パターン】
IMSUM関数の使い方は、大きく分けて4パターンあります。
シーンに応じて使い分けることで、入力ミスを減らし可読性も上がりますよ。
①文字列で直接指定する
複素数を「”a+bi”」形式で直接書く、最もシンプルな方法です。
=IMSUM("1+2i", "3+4i")
// 結果: 4+6i
=IMSUM("20+5j", 4, "j")
// 結果: 24+6j
実部だけの実数や、虚部だけの「”j”」も引数として渡せます。
少数の値をその場で計算する用途に向いています。
②セル参照で指定する
セルに入力済みの複素数を、ひとつずつ参照して足し合わせる方法です。
A1: 2+3i
A2: 4+5i
A3: 1+1i
=IMSUM(A1, A2, A3)
// 結果: 7+9i
データを別シートで管理している場合に使いやすいパターンです。
ただし、引数として個別に書くと最大254個までしか追加できません。
③セル範囲で指定する(引数254個上限を回避)
セル範囲をまとめて渡すと、範囲内のすべての複素数を一括加算できます。
A2:A100 に複素数が並んでいる場合
=IMSUM(A2:A100)
範囲指定なら引数1個で済むため、254個の上限を実質的に回避できます。
100行・1000行のデータも問題なく処理できる、最も実用的なパターンですよ。
④COMPLEX関数と組み合わせる
COMPLEX関数(実部と虚部から複素数を組み立てる関数)と併用すると、別カラムの数値からそのまま和を求められます。
=IMSUM(COMPLEX(2,5), COMPLEX(4,2))
// 結果: 6+7i
=IMSUM(COMPLEX(A1,B1), COMPLEX(A2,B2))
// A列が実部、B列が虚部
実部と虚部を別カラムで管理している場合に便利です。
文字列処理の手間がなく、計算ミスも起きにくいですよ。
ARRAYFORMULAと組み合わせた一括処理(Sheets固有Tips)
スプレッドシートには、配列演算を一括展開するARRAYFORMULA関数があります。これを使うと、大量データを効率よく処理できます。
IMSUM関数と組み合わせれば、複数の複素数列をまとめて加算できますよ。
インピーダンス一括計算の実例
例えば、各行ごとに「Z1 + Z2」の合成インピーダンスを求めたい場合を考えます。
A列: Z1(複素数) B列: Z2(複素数) C列: 合成
C2セルに各行ごとに加算
=IMSUM(A2, B2)
行単位の和は、上記のように各行で =IMSUM(A2, B2) を入力するのがシンプルで確実です。
一方、列方向の総和をまとめて求めたい場合はセル範囲指定が便利です。
=IMSUM(A2:A100) // A列の複素数をすべて合計
=IMSUM(A:A, B:B) // 2列分をまとめて合計
ARRAYFORMULAと組み合わせる場合は、別のアプローチが便利です。IMREALとIMAGINARYで実部・虚部を分離してから配列演算する方法もあります。
// 実部と虚部を別々に集計してCOMPLEXで再合成
=COMPLEX(SUMPRODUCT(IMREAL(A2:A10)), SUMPRODUCT(IMAGINARY(A2:A10)))
行方向は個別計算、列方向は範囲指定、と使い分けると見通しが良くなりますよ。
IMSUM関数の実務活用例
IMSUM関数の本領は、電気回路や信号処理の解析シーンで発揮されます。
ここでは代表的な3つの活用例を紹介しますよ。
インピーダンスの直列合成
直列接続された素子の合成インピーダンス(交流回路の抵抗成分)は、各インピーダンスの和で求められます。
抵抗 R = 5Ω、コイル jωL = 3j、コンデンサ -j/ωC = -2j を直列接続する例です。
=IMSUM("5", "3j", "-2j")
// 結果: 5+1j(合成Z = 5+1j [Ω])
抵抗成分(実部)とリアクタンス(虚部)を分けて入力できるため、回路設計の検算がスムーズです。
フェーザ加算(交流回路)
交流電圧や電流をフェーザ(複素数表記)で扱うと、合成計算が単純な足し算になります。
V1 = 100+0j(基準電圧)
V2 = 70.7+70.7j(位相45°ずれ)
=IMSUM("100+0j", "70.7+70.7j")
// 結果: 170.7+70.7j
時間領域の三角関数積分を回避でき、設計現場でよく使われる手法ですよ。
信号処理:周波数成分の加算
フーリエ解析で得られた周波数成分は、振幅と位相を持つ複素数として表されます。
複数の周波数成分を合成する際にも、IMSUM関数で一括加算が可能です。
実部だけ取り出したいときはIMREAL関数、虚部はIMAGINARY関数を使ってみてください。
よくあるエラーと対処法
IMSUM関数で発生しやすい代表的なエラーと、その対処法をまとめます。
#NUM! エラー:スペース混入が原因
複素数文字列にスペースが混じっていると、#NUM!エラーが返されることがあります。
=IMSUM("3 + 4i") // → #NUM!
=IMSUM("3+4i") // → OK
対処法は、スペースを削除した「a+bi」形式に揃えることです。
外部から取り込んだデータは、TRIM関数やSUBSTITUTE関数で前処理しておきましょう。
#VALUE! エラー:大文字I/J・全角i/j混入
虚数単位は半角小文字の i または j のみ受け付けます。
=IMSUM("3+4I") // → #VALUE!(大文字NG)
=IMSUM("3+4i") // → #VALUE!(全角NG)
=IMSUM("3+4i") // → OK
入力規則やデータの検証で、半角小文字に統一しておくと安心ですよ。
i/j混在エラー:SUBSTITUTE関数で事前統一
i と j が混在しているデータは、SUBSTITUTE関数(文字列置換関数)で統一できます。
A1: 3+4j
=IMSUM(SUBSTITUTE(A1, "j", "i"), "1+2i")
// 結果: 4+6i
範囲全体を統一したい場合
=ARRAYFORMULA(SUBSTITUTE(A2:A10, "j", "i"))
ヘルパー列で統一してから IMSUM に渡すと、エラーなく処理できますよ。
複素数関連の関数一覧(IM系シリーズ)
IMSUM関数は、スプレッドシートのIM系(複素数)関数ファミリーの一員です。
組み合わせて使うことで、複素数演算を網羅的にカバーできます。
| カテゴリ | 関数名 | 用途 |
|---|---|---|
| 生成 | COMPLEX | 実部と虚部から複素数を作成 |
| 四則演算(和) | IMSUM(本記事) | 複素数の和 |
| 四則演算(差) | IMSUB | 複素数の差 |
| 四則演算(積) | IMPRODUCT | 複素数の積 |
| 四則演算(商) | IMDIV | 複素数の商 |
| 抽出(実部) | IMREAL | 実部を取り出す |
| 抽出(虚部) | IMAGINARY | 虚部を取り出す |
加減乗除は IMSUM/IMSUB/IMPRODUCT/IMDIV で網羅できます。実部・虚部を取り出すなら IMREAL/IMAGINARY を組み合わせましょう。
なお、Excel版でも同じ関数名で同等に動作します。詳しくはExcelのIMSUM関数記事もあわせてご覧くださいね。
まとめ
スプレッドシートのIMSUM関数は、複素数の和をワンステップで計算できる便利なエンジニアリング関数です。
本記事のポイントを整理します。
- IMSUM関数は複素数を「a+bi」形式で受け取り、和を返す
- 引数は最大255個、セル範囲指定なら実質上限なし
- 4パターン(直接指定/セル参照/範囲指定/COMPLEX組み合わせ)を使い分ける
- ARRAYFORMULA連携やSUMPRODUCTで大量データの一括処理にも対応
- i/j混在やスペース混入のエラーは、SUBSTITUTE関数で事前統一すれば回避できる
電気回路のインピーダンス合成、フェーザ加算、信号処理など、理工系の現場で幅広く活躍します。
ぜひ実際のシートで手を動かして、IMSUM関数の便利さを体感してみてくださいね。
