<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>複素数 &#8211; biz-tactics</title>
	<atom:link href="https://mashukabu.com/tag/%e8%a4%87%e7%b4%a0%e6%95%b0/feed/" rel="self" type="application/rss+xml" />
	<link>https://mashukabu.com</link>
	<description></description>
	<lastBuildDate>Wed, 29 Apr 2026 12:04:48 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://mashukabu.com/wp-content/uploads/2022/04/cropped-site-icon-32x32.png</url>
	<title>複素数 &#8211; biz-tactics</title>
	<link>https://mashukabu.com</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>スプレッドシートのIMPOWER関数の使い方｜複素数のべき乗を一発で計算</title>
		<link>https://mashukabu.com/spreadsheet-impower-function/</link>
					<comments>https://mashukabu.com/spreadsheet-impower-function/#respond</comments>
		
		<dc:creator><![CDATA[まっしゅ]]></dc:creator>
		<pubDate>Wed, 29 Apr 2026 12:04:48 +0000</pubDate>
				<category><![CDATA[Googleスプレッドシート]]></category>
		<category><![CDATA[IMPOWER]]></category>
		<category><![CDATA[エンジニアリング関数]]></category>
		<category><![CDATA[スプレッドシート]]></category>
		<category><![CDATA[べき乗]]></category>
		<category><![CDATA[複素数]]></category>
		<guid isPermaLink="false">https://mashukabu.com/?p=6352</guid>

					<description><![CDATA[GoogleスプレッドシートのIMPOWER関数の使い方を解説。複素数（a+bi）のn乗を一発で求める基本構文、虚数単位i/jの扱い、COMPLEX関数やIMABS・IMARGUMENTとの連携、ド・モアブルの定理に基づく検算方法、平方根や逆数の計算、電気工学・信号処理での実務活用例、よくあるエラー対処法まで実例付きで紹介します。]]></description>
										<content:encoded><![CDATA[
<p>「スプレッドシートで複素数のべき乗を計算したいけど、(a+bi)を何度も掛け算するのは面倒&#8230;」</p>



<p>スプレッドシートで複素数を扱っていると、2乗や3乗、平方根といったべき乗計算が必要になる場面がありますよね。実部と虚部を展開して i² = -1 で整理し、最後に再び複素数の形に戻す&#8230;という手順を毎回踏むのはちょっと大変です。</p>



<p>そんなときに頼りになるのがGoogleスプレッドシートのIMPOWER関数です。複素数と指数を渡すだけでべき乗の値を一発で返してくれるので、ド・モアブルの定理やフラクタル計算の数式が一気にすっきりしますよ。</p>



<p>ExcelのIMPOWER関数と完全互換なので、Excelファイルとやり取りする現場でも安心ですね。COMPLEX関数で作った複素数や、IMSUM・IMPRODUCTの演算結果からも、そのままべき乗を計算できます。</p>



<p>この記事では、スプレッドシートのIMPOWER関数の基本構文と実務での活用例を解説します。ド・モアブルの定理に基づく内部計算の仕組みや、よくあるエラーと対処法もしっかり紹介していきますよ。</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-1" checked><label class="toc-title" for="toc-checkbox-1">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">スプレッドシートのIMPOWER関数とは？</a></li><li><a href="#toc2" tabindex="0">IMPOWER関数の書き方（構文と引数）</a><ol><li><a href="#toc3" tabindex="0">基本構文</a></li><li><a href="#toc4" tabindex="0">引数の詳細</a></li></ol></li><li><a href="#toc5" tabindex="0">IMPOWER関数の基本的な使い方</a><ol><li><a href="#toc6" tabindex="0">文字列で複素数を直接指定する</a></li><li><a href="#toc7" tabindex="0">セル参照で複素数を指定する</a></li><li><a href="#toc8" tabindex="0">COMPLEX関数と組み合わせる</a></li><li><a href="#toc9" tabindex="0">平方根として使う（指数に 0.5）</a></li><li><a href="#toc10" tabindex="0">逆数を求める（指数に -1）</a></li><li><a href="#toc11" tabindex="0">立方根を求める（指数に 1/3）</a></li><li><a href="#toc12" tabindex="0">ARRAYFORMULAで複数行を一括処理する</a></li></ol></li><li><a href="#toc13" tabindex="0">IMPOWER関数の実務活用例</a><ol><li><a href="#toc14" tabindex="0">活用例1: ド・モアブルの定理で検算する</a></li><li><a href="#toc15" tabindex="0">活用例2: 電気回路のインピーダンス計算</a></li><li><a href="#toc16" tabindex="0">活用例3: フラクタル（マンデルブロ集合）の反復計算</a></li><li><a href="#toc17" tabindex="0">活用例4: 離散フーリエ変換の回転因子</a></li><li><a href="#toc18" tabindex="0">活用例5: 制御工学の極の安定性確認</a></li></ol></li><li><a href="#toc19" tabindex="0">IMPOWER関数とCOMPLEX関数群の関係</a></li><li><a href="#toc20" tabindex="0">IMPOWER関数のよくあるエラーと対処法</a><ol><li><a href="#toc21" tabindex="0">#NUM! エラー（複素数の形式エラー）</a></li><li><a href="#toc22" tabindex="0">#VALUE! エラー（引数の型エラー）</a></li><li><a href="#toc23" tabindex="0">結果が極端な値になる</a></li><li><a href="#toc24" tabindex="0">結果の符号が想定と違う</a></li><li><a href="#toc25" tabindex="0">IFERRORでまとめてエラーを吸収する</a></li></ol></li><li><a href="#toc26" tabindex="0">IMPOWER関数とExcelの互換性</a></li><li><a href="#toc27" tabindex="0">複素数関連の関数一覧</a></li><li><a href="#toc28" tabindex="0">まとめ</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">スプレッドシートのIMPOWER関数とは？</span></h2>



<p>GoogleスプレッドシートのIMPOWER関数（イマジナリー・パワー関数）は、複素数のべき乗（n乗）を返す関数です。エンジニアリング関数（電気・物理・工学系の計算で使う関数群）のひとつに分類されますよ。</p>



<p>読み方は「イマジナリー・パワー」または「アイエム・パワー」で、英語の「imaginary number（虚数）」の「power（べき乗）」に由来します。複素数「a+bi」と指数nに対して、(a+bi)のn乗を返してくれるのが役割ですね。</p>



<p>そもそも複素数のべき乗とは、実数のべき乗を複素数全体に拡張したものです。極形式とド・モアブルの定理から導かれる定義式は次のようになります。</p>



<pre class="wp-block-code"><code>(r(cosθ + i sinθ))^n = r^n × (cos(nθ) + i sin(nθ))</code></pre>



<p>絶対値はn乗、偏角（角度）はn倍されるというシンプルなルールですね。指数nには整数だけでなく、小数や負の数も指定できるので、平方根や逆数の計算にも使えるのが特徴です。</p>



<figure class="wp-block-table"><table><thead><tr><th>複素数（z）と指数（n）</th><th>IMPOWER(z,n)の結果</th><th>内部計算</th></tr></thead><tbody><tr><td>(2+3i)^2</td><td>-5+12i</td><td>(2+3i)×(2+3i) を展開</td></tr><tr><td>(1+1i)^3</td><td>-2+2i</td><td>絶対値√2を3乗、偏角π/4を3倍</td></tr><tr><td>(3+4i)^(-1)</td><td>0.12-0.16i</td><td>逆数（共役/絶対値の2乗）</td></tr><tr><td>(-1+0i)^0.5</td><td>約 0+1i</td><td>√(-1) = i</td></tr><tr><td>(8+0i)^(1/3)</td><td>2+0i</td><td>立方根</td></tr></tbody></table></figure>



<p>IMPOWER関数を使えば、この表の右側にある「複素数のべき乗」をサクッと取り出せます。Excelとの互換性も完璧で、Excel 2007以降のすべてのバージョンに対応していますよ。</p>



<p>複素数のべき乗は、電気工学のインピーダンス計算・信号処理のフーリエ変換・制御工学の極零解析・フラクタル（マンデルブロ集合）など、複素数演算が必要な場面で活躍する基礎パーツですね。</p>



<h2 class="wp-block-heading"><span id="toc2">IMPOWER関数の書き方（構文と引数）</span></h2>



<h3 class="wp-block-heading"><span id="toc3">基本構文</span></h3>



<pre class="wp-block-code"><code>=IMPOWER(複素数, 指数)</code></pre>



<p>引数は2つあり、どちらも必須です。</p>



<h3 class="wp-block-heading"><span id="toc4">引数の詳細</span></h3>



<figure class="wp-block-table"><table><thead><tr><th>引数</th><th>必須/任意</th><th>説明</th></tr></thead><tbody><tr><td>複素数（inumber）</td><td>必須</td><td>べき乗を求めたい複素数。文字列またはセル参照で指定する</td></tr><tr><td>指数（number）</td><td>必須</td><td>何乗するかを示す数値。整数・小数・負の数が指定できる</td></tr></tbody></table></figure>



<p>引数1には「&#8221;2+3i&#8221;」や「&#8221;2+3j&#8221;」のような複素数文字列を直接渡せます。COMPLEX関数（実数と虚数から複素数を作成する関数）の結果や、複素数が入ったセルの参照も指定できますよ。</p>



<p>虚数単位は小文字の「i」または「j」のどちらでも受け付けます。数学では「i」、電気工学では「j」が使われる慣習ですね。IMPOWER関数はどちらでも同じように動作してくれます。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>TIP</strong></p><p>戻り値は元の入力と同じ虚数単位で返されます。「1+1i」を渡せば「i」付きで、「1+1j」を渡せば「j」付きで返るので、表記の統一性も保たれますよ。</p></blockquote>



<p>引数2の指数には、2のような整数のほか、0.5（平方根）、-1（逆数）、1/3（立方根）といった任意の実数を指定できます。文字列ではなく数値として渡す点に注意してくださいね。</p>



<h2 class="wp-block-heading"><span id="toc5">IMPOWER関数の基本的な使い方</span></h2>



<h3 class="wp-block-heading"><span id="toc6">文字列で複素数を直接指定する</span></h3>



<p>複素数文字列をそのまま引数に渡してみましょう。</p>



<pre class="wp-block-code"><code>=IMPOWER(&quot;2+3i&quot;, 2)</code></pre>



<p>結果は「-5+12i」になります。手計算で確認すると (2+3i)² = 4 + 12i + 9i² = 4 + 12i &#8211; 9 = -5 + 12i なので、計算が合っていますね。</p>



<p>実部だけの複素数（虚部0）を渡すと、通常のべき乗と同じ結果になります。</p>



<pre class="wp-block-code"><code>=IMPOWER(&quot;2+0i&quot;, 3)</code></pre>



<p>結果は「8」です。2の3乗 = 8 という基本的な値が返ってきますね。</p>



<p>虚部だけの純虚数を渡すと、i のべき乗の循環が確認できます。</p>



<pre class="wp-block-code"><code>=IMPOWER(&quot;0+1i&quot;, 2)
=IMPOWER(&quot;0+1i&quot;, 3)
=IMPOWER(&quot;0+1i&quot;, 4)</code></pre>



<p>結果はそれぞれ「-1」「-i」「1」になります。i² = -1、i³ = -i、i⁴ = 1 という有名な循環パターンですね。</p>



<h3 class="wp-block-heading"><span id="toc7">セル参照で複素数を指定する</span></h3>



<p>実務ではセルに入った複素数を扱う場面が多いですよね。A2に「1+2i」、B2に「3」が入っている場合は次のように書きます。</p>



<pre class="wp-block-code"><code>=IMPOWER(A2, B2)</code></pre>



<p>結果は「-11-2i」になります。セル参照を渡すだけで、入っている複素数のべき乗を取り出せますよ。</p>



<h3 class="wp-block-heading"><span id="toc8">COMPLEX関数と組み合わせる</span></h3>



<p><a href="https://mashukabu.com/spreadsheet-complex-function/">COMPLEX関数</a>で作った複素数のべき乗を、その場で計算することもできます。</p>



<pre class="wp-block-code"><code>=IMPOWER(COMPLEX(2, 3), 2)</code></pre>



<p>結果は「-5+12i」、つまり「IMPOWER(&#8220;2+3i&#8221;, 2)」と同じですね。COMPLEX(2, 3)が内部で「2+3i」を作り、IMPOWER関数がそのべき乗を返してくれます。</p>



<p>実部と虚部がセルに分かれているデータを扱うときに便利な書き方ですよ。</p>



<h3 class="wp-block-heading"><span id="toc9">平方根として使う（指数に 0.5）</span></h3>



<p>指数を 0.5 にすると、複素数の平方根を計算できます。</p>



<pre class="wp-block-code"><code>=IMPOWER(&quot;-1+0i&quot;, 0.5)</code></pre>



<p>結果は「6.12&#8230;E-17+1i」、つまりほぼ「i」ですね。√(-1) = i という有名な関係式が確認できます。</p>



<p>ただし複素数の平方根を求めたいだけなら、専用のIMSQRT関数の方が意図が明確で読みやすくなりますよ。</p>



<h3 class="wp-block-heading"><span id="toc10">逆数を求める（指数に -1）</span></h3>



<p>指数に -1 を指定すると、複素数の逆数を計算できます。</p>



<pre class="wp-block-code"><code>=IMPOWER(&quot;3+4i&quot;, -1)</code></pre>



<p>結果は「0.12-0.16i」になります。手計算で確認すると 1/(3+4i) = (3-4i)/((3+4i)(3-4i)) = (3-4i)/25 = 0.12-0.16i なので、共役複素数を使った計算結果と一致しますね。</p>



<h3 class="wp-block-heading"><span id="toc11">立方根を求める（指数に 1/3）</span></h3>



<p>指数に 1/3 を指定すると、立方根が得られます。</p>



<pre class="wp-block-code"><code>=IMPOWER(&quot;8+0i&quot;, 1/3)</code></pre>



<p>結果は「2」です。8の立方根 = 2 ですね。負の実数の立方根でも動作するので、実数の世界では解けない方程式も複素数平面上で解けます。</p>



<h3 class="wp-block-heading"><span id="toc12">ARRAYFORMULAで複数行を一括処理する</span></h3>



<p>複素数のリストから一気にべき乗の列を作りたい場面もありますよね。そんなときはARRAYFORMULA関数（数式を範囲全体に展開する関数）と組み合わせます。</p>



<pre class="wp-block-code"><code>=ARRAYFORMULA(IMPOWER(A2:A10, 2))</code></pre>



<p>A列に並んだ複素数から、対応する2乗の値をB列に一発で展開できますよ。フーリエ変換の回転因子を一括で計算するときに重宝しますね。</p>



<h2 class="wp-block-heading"><span id="toc13">IMPOWER関数の実務活用例</span></h2>



<h3 class="wp-block-heading"><span id="toc14">活用例1: ド・モアブルの定理で検算する</span></h3>



<p>複素数のべき乗は、極形式 r(cosθ + i sinθ) で表すと「絶対値はn乗、偏角はn倍」というシンプルな式になります。IMABS関数（絶対値）とIMARGUMENT関数（偏角）を組み合わせて、IMPOWERの結果を検算してみましょう。</p>



<p>A2に「2+3i」が入っているとします。</p>



<pre class="wp-block-code"><code>B2: =IMABS(A2)                  ← 元の絶対値（√13 ≈ 3.6056）
C2: =IMARGUMENT(A2)             ← 元の偏角（≈ 0.9828）
D2: =IMABS(IMPOWER(A2, 2))      ← 2乗後の絶対値（13 ≈ 3.6056²）
E2: =IMARGUMENT(IMPOWER(A2, 2)) ← 2乗後の偏角（≈ 1.9656 = 0.9828×2）</code></pre>



<p>D2が元の絶対値の2乗、E2が元の偏角の2倍になっていれば、ド・モアブルの定理どおりに計算されている証拠ですね。シート上で自動チェックを仕込んでおくと、入力ミスにも気付きやすくなりますよ。</p>



<h3 class="wp-block-heading"><span id="toc15">活用例2: 電気回路のインピーダンス計算</span></h3>



<p>交流回路のインピーダンスは複素数で表され、共振周波数近傍のスイープ計算では (R + jωL + 1/(jωC))^n のようなべき乗式が頻繁に登場します。IMPOWER関数を使えば、Excelシートに直接落とし込めますよ。</p>



<p>抵抗R=10Ω、リアクタンスX=20Ω のインピーダンスZ=10+20j を2乗するなら、こう書きます。</p>



<pre class="wp-block-code"><code>A2: =COMPLEX(10, 20, &quot;j&quot;)         ← Z = 10+20j
B2: =IMPOWER(A2, 2)               ← Z² = -300+400j
C2: =IMABS(B2)                    ← |Z²| = 500</code></pre>



<p>電気工学の慣習に合わせて虚数単位を「j」にしたい場合は、COMPLEX関数の第3引数で指定できますね。</p>



<h3 class="wp-block-heading"><span id="toc16">活用例3: フラクタル（マンデルブロ集合）の反復計算</span></h3>



<p>マンデルブロ集合の漸化式は z[n+1] = z[n]² + c という形をしています。IMPOWERとIMSUMを組み合わせれば、1セルで1ステップの計算を表現できますよ。</p>



<p>c = -0.5+0.5i、初期値 z[0] = 0+0i から3ステップ進めるなら、こう書きます。</p>



<pre class="wp-block-code"><code>A2: 0+0i                              ← z[0]
A3: =IMSUM(IMPOWER(A2, 2), &quot;-0.5+0.5i&quot;)  ← z[1]
A4: =IMSUM(IMPOWER(A3, 2), &quot;-0.5+0.5i&quot;)  ← z[2]
A5: =IMSUM(IMPOWER(A4, 2), &quot;-0.5+0.5i&quot;)  ← z[3]</code></pre>



<p>各ステップで絶対値が2を超えなければ「集合に含まれる」と判定する流れですね。学習用のシミュレーションシートとして使えるパターンです。</p>



<h3 class="wp-block-heading"><span id="toc17">活用例4: 離散フーリエ変換の回転因子</span></h3>



<p>離散フーリエ変換（DFT）では、回転因子 W = e^(-2πi/N) のべき乗 W^k を並べる計算が登場します。IMPOWERとCOMPLEX、IMEXP（複素指数関数）を組み合わせれば、シート上に並べられますよ。</p>



<p>N=8の場合、回転因子の基本値とそのk乗はこう書けます。</p>



<pre class="wp-block-code"><code>A2: =IMEXP(COMPLEX(0, -2*PI()/8))     ← W = e^(-πi/4)
B2: 0
B3: 1
B4: 2
C2: =IMPOWER($A$2, B2)                ← W^0 = 1
C3: =IMPOWER($A$2, B3)                ← W^1 = √2/2 - i√2/2
C4: =IMPOWER($A$2, B4)                ← W^2 = -i</code></pre>



<p>DFTの教材や、信号処理の学習シートで使える書き方ですね。</p>



<h3 class="wp-block-heading"><span id="toc18">活用例5: 制御工学の極の安定性確認</span></h3>



<p>制御工学では、離散時間系の極 z = re^(iθ) を n ステップ進めた z^n の挙動から系の安定性を確認します。極が単位円内にあれば z^n は0に収束、外にあれば発散しますね。</p>



<p>極 z = 0.8+0.4i を10ステップ進めるなら、こう書きます。</p>



<pre class="wp-block-code"><code>A2: 0.8+0.4i                       ← 極 z
B2: =IMPOWER(A2, 10)               ← z^10
C2: =IMABS(B2)                     ← |z^10|</code></pre>



<p>|z|=√(0.8²+0.4²) ≈ 0.894 < 1 なので、ステップを進めるほど絶対値は小さくなり、系は安定と判断できますね。</p>



<h2 class="wp-block-heading"><span id="toc19">IMPOWER関数とCOMPLEX関数群の関係</span></h2>



<p>複素数を扱う関数群の中で、IMPOWER関数の位置づけを整理しておきましょう。</p>



<figure class="wp-block-table"><table><thead><tr><th>関数</th><th>入力</th><th>出力</th><th>役割</th></tr></thead><tbody><tr><td><a href="https://mashukabu.com/spreadsheet-complex-function/">COMPLEX</a></td><td>実数 a, b</td><td>複素数 a+bi</td><td>複素数を作る</td></tr><tr><td><a href="https://mashukabu.com/spreadsheet-imreal-function/">IMREAL</a></td><td>複素数 a+bi</td><td>実数 a</td><td>実部を取り出す</td></tr><tr><td><a href="https://mashukabu.com/spreadsheet-imaginary-function/">IMAGINARY</a></td><td>複素数 a+bi</td><td>実数 b</td><td>虚部を取り出す</td></tr><tr><td><a href="https://mashukabu.com/spreadsheet-imabs-function/">IMABS</a></td><td>複素数 a+bi</td><td>実数 √(a²+b²)</td><td>大きさを取り出す</td></tr><tr><td><a href="https://mashukabu.com/spreadsheet-imargument-function/">IMARGUMENT</a></td><td>複素数 a+bi</td><td>実数 atan2(b,a)</td><td>偏角を取り出す</td></tr><tr><td>IMPOWER</td><td>複素数 z, 指数 n</td><td>複素数 z^n</td><td>べき乗を計算する</td></tr><tr><td>IMPRODUCT</td><td>複素数 z1, z2, &#8230;</td><td>複素数 z1×z2×&#8230;</td><td>積を計算する</td></tr><tr><td>IMSQRT</td><td>複素数 z</td><td>複素数 √z</td><td>平方根を計算する</td></tr></tbody></table></figure>



<p>IMPOWERは「複素数から複素数を計算する」役割です。出力もそのまま複素数なので、IMSUMやIMPRODUCTにそのまま渡してさらに計算を続けられますよ。</p>



<p>たとえば (a+bi)² を IMPRODUCT で代用すると、こう書けます。</p>



<pre class="wp-block-code"><code>=IMPRODUCT(&quot;2+3i&quot;, &quot;2+3i&quot;)
=IMPOWER(&quot;2+3i&quot;, 2)</code></pre>



<p>どちらも結果は「-5+12i」で同じですね。ただし指数が大きくなるとIMPRODUCTのネストが煩雑になるので、3乗以上はIMPOWERの方が圧倒的に読みやすくなります。</p>



<p>平方根だけを求めたい場合は、専用の<a href="https://mashukabu.com/spreadsheet-imsqrt-function/">IMSQRT関数</a>を使うと意図が明確になりますよ。</p>



<h2 class="wp-block-heading"><span id="toc20">IMPOWER関数のよくあるエラーと対処法</span></h2>



<h3 class="wp-block-heading"><span id="toc21">#NUM! エラー（複素数の形式エラー）</span></h3>



<p>複素数として認識できない文字列を渡したときに発生します。虚数単位が大文字になっていたり、i・j以外の文字を使っている場合が典型例ですよ。</p>



<pre class="wp-block-code"><code>=IMPOWER(&quot;1+1I&quot;, 2)   → #NUM!（大文字のIは不可）
=IMPOWER(&quot;1+1k&quot;, 2)   → #NUM!（i・j以外は不可）
=IMPOWER(&quot;１+１i&quot;, 2) → #NUM!（全角文字は不可）</code></pre>



<p>対処法は、複素数文字列を必ず半角の「a+bi」または「a+bj」の形式にすることです。虚数単位は小文字限定なので、CapsLockがオンになっていないか確認してくださいね。</p>



<p>スペースが入っている場合（例: <code>"1 + 1i"</code>）も認識できないことがあるので、余計な空白を除いておくと安心です。</p>



<h3 class="wp-block-heading"><span id="toc22">#VALUE! エラー（引数の型エラー）</span></h3>



<p>指数に文字列や論理値を渡したときに発生します。</p>



<pre class="wp-block-code"><code>=IMPOWER(&quot;1+1i&quot;, &quot;2&quot;)   → 場合により #VALUE!（指数は数値型で渡す）
=IMPOWER(&quot;1+1i&quot;, TRUE)  → #VALUE!（論理値は不可）
=IMPOWER(&quot;1+1i&quot;, #N/A)  → #N/A（エラー値はそのまま伝播）</code></pre>



<p>対処法は、指数を数値として渡すことです。他システムからコピーした数値はテキスト扱いになっていることがあるので、<code>=ISNUMBER(B2)</code> でチェックしておくと安心ですよ。</p>



<h3 class="wp-block-heading"><span id="toc23">結果が極端な値になる</span></h3>



<p>指数が極端に大きいと、絶対値がオーバーフローしたり数値誤差で不安定になることがあります。</p>



<pre class="wp-block-code"><code>=IMPOWER(&quot;2+3i&quot;, 100)   → 絶対値が膨大になり誤差が大きくなる</code></pre>



<p>対処法は、指数を必要な範囲に抑えることです。フラクタル計算なら脱出判定（|z|>2）で打ち切る、制御解析なら安定性が確認できる範囲で止める、といった工夫が必要ですね。</p>



<h3 class="wp-block-heading"><span id="toc24">結果の符号が想定と違う</span></h3>



<p>複素数の偏角は -π 〜 π の範囲で扱われるため、べき乗の結果が想定と符号違いになるケースがあります。「なぜマイナスになるのか」と迷ったら、IMARGUMENT関数で偏角を確認してみましょう。</p>



<pre class="wp-block-code"><code>=IMARGUMENT(&quot;2+3i&quot;)           ← 元の偏角を確認
=IMARGUMENT(IMPOWER(&quot;2+3i&quot;,2)) ← 2乗後の偏角を確認</code></pre>



<p>ド・モアブルの定理どおり、偏角がn倍になっているかをチェックすると原因が見えてきますよ。</p>



<h3 class="wp-block-heading"><span id="toc25">IFERRORでまとめてエラーを吸収する</span></h3>



<p>入力データの信頼性が低い場合は、IFERROR関数（エラー時に代替値を返す関数）で包んでおくとシート全体の集計が止まりません。</p>



<pre class="wp-block-code"><code>=IFERROR(IMPOWER(A2, B2), &quot;形式エラー&quot;)</code></pre>



<p>エラー時にメッセージを返すようにしておけば、安心して大量データに適用できますよ。</p>



<h2 class="wp-block-heading"><span id="toc26">IMPOWER関数とExcelの互換性</span></h2>



<p>GoogleスプレッドシートのIMPOWER関数は、ExcelのIMPOWER関数と仕様が完全に一致しています。構文・引数・戻り値の形式・エラー条件まで同じですよ。</p>



<p>ExcelファイルをGoogleスプレッドシートで開いてもIMPOWER関数はそのまま動作します。逆にスプレッドシートで作った数式をExcelで開いても問題ありませんね。</p>



<p>ExcelのIMPOWER関数は、Excel 2007以降のすべてのバージョンで利用できます。Microsoft 365、Excel for Mac、Excel Online でも同じように使えますよ。古い環境とファイルを共有する場合でも、安心して使える関数ですね。</p>



<h2 class="wp-block-heading"><span id="toc27">複素数関連の関数一覧</span></h2>



<p>IMPOWER関数と一緒に使うことが多い、複素数関連の関数をまとめました。</p>



<figure class="wp-block-table"><table><thead><tr><th>関数名</th><th>機能</th></tr></thead><tbody><tr><td><a href="https://mashukabu.com/spreadsheet-complex-function/">COMPLEX</a></td><td>実数と虚数から複素数を作成する</td></tr><tr><td><a href="https://mashukabu.com/spreadsheet-imreal-function/">IMREAL</a></td><td>複素数の実数係数を返す</td></tr><tr><td><a href="https://mashukabu.com/spreadsheet-imaginary-function/">IMAGINARY</a></td><td>複素数の虚数係数を返す</td></tr><tr><td><a href="https://mashukabu.com/spreadsheet-imabs-function/">IMABS</a></td><td>複素数の絶対値（大きさ）を返す</td></tr><tr><td><a href="https://mashukabu.com/spreadsheet-imargument-function/">IMARGUMENT</a></td><td>複素数の偏角（角度）をラジアンで返す</td></tr><tr><td><a href="https://mashukabu.com/spreadsheet-imconjugate-function/">IMCONJUGATE</a></td><td>共役複素数を返す</td></tr><tr><td>IMPOWER</td><td>複素数のべき乗を返す</td></tr><tr><td>IMSQRT</td><td>複素数の平方根を返す</td></tr><tr><td>IMSUM</td><td>複素数の合計（足し算）を返す</td></tr><tr><td>IMSUB</td><td>複素数の差（引き算）を返す</td></tr><tr><td>IMPRODUCT</td><td>複素数の積（掛け算）を返す</td></tr><tr><td>IMDIV</td><td>複素数の商（割り算）を返す</td></tr><tr><td>IMEXP</td><td>複素数の指数関数を返す</td></tr><tr><td>IMLN</td><td>複素数の自然対数を返す</td></tr><tr><td><a href="https://mashukabu.com/spreadsheet-imcos-function/">IMCOS</a></td><td>複素数のコサインを返す</td></tr><tr><td>IMSIN</td><td>複素数のサインを返す</td></tr></tbody></table></figure>



<p>IMPOWER関数は、これら複素数関数群の中で「べき乗を計算する」役割を担います。COMPLEXで作り、IMPOWERでべき乗を取り、IMABS・IMARGUMENTで絶対値と偏角を確認するのが基本パターンですね。</p>



<h2 class="wp-block-heading"><span id="toc28">まとめ</span></h2>



<p>GoogleスプレッドシートのIMPOWER関数は、複素数のべき乗（n乗）を返す関数です。電気工学のインピーダンス計算、信号処理のフーリエ変換、制御工学の極零解析、フラクタルの反復計算など、複素数のべき乗が必要な場面で欠かせない関数ですよ。</p>



<ul class="wp-block-list"><li>構文は <code>=IMPOWER(複素数, 指数)</code> で引数は2つとも必須</li><li>「a+bi」とn乗の指数を渡すと、(a+bi)^n が返る</li><li>「a+bj」のような工学系表記もそのまま受け付ける</li><li>指数には整数のほか、0.5（平方根）・-1（逆数）・1/3（立方根）も指定できる</li><li>内部的にはド・モアブルの定理に従って計算される</li><li>COMPLEX関数の結果やセル参照、複素数演算の結果からべき乗を計算できる</li><li>IMABS・IMARGUMENTと組み合わせて結果を検算できる</li><li>平方根専用ならIMSQRT、掛け算ならIMPRODUCTと使い分ける</li><li>ARRAYFORMULAで複数の複素数を一括処理できる</li><li>大文字の「I」「J」や全角文字、i・j以外の単位は #NUM! エラー</li><li>指数に論理値や非数値文字列を渡すと #VALUE! エラー</li><li>偏角は -π 〜 π の範囲なので、結果の符号はIMARGUMENTで確認</li><li>ExcelのIMPOWER関数と完全互換（Excel 2007以降）</li></ul>



<p>複素数のべき乗が必要になったら、IMPOWER関数の出番ですよ。COMPLEX関数で複素数を作り、IMPOWERでべき乗を取り、IMABS・IMARGUMENTで絶対値と偏角を検算する流れで、エンジニアリング系のシートを軽快に組み立ててみてくださいね。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://mashukabu.com/spreadsheet-impower-function/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>スプレッドシートのIMSQRT関数の使い方｜複素数の平方根を一発で求める</title>
		<link>https://mashukabu.com/spreadsheet-imsqrt-function/</link>
					<comments>https://mashukabu.com/spreadsheet-imsqrt-function/#respond</comments>
		
		<dc:creator><![CDATA[まっしゅ]]></dc:creator>
		<pubDate>Wed, 29 Apr 2026 11:24:35 +0000</pubDate>
				<category><![CDATA[Googleスプレッドシート]]></category>
		<category><![CDATA[IMSQRT]]></category>
		<category><![CDATA[エンジニアリング関数]]></category>
		<category><![CDATA[スプレッドシート]]></category>
		<category><![CDATA[平方根]]></category>
		<category><![CDATA[複素数]]></category>
		<guid isPermaLink="false">https://mashukabu.com/?p=6353</guid>

					<description><![CDATA[GoogleスプレッドシートのIMSQRT関数の使い方を解説。複素数（a+bi）の平方根を一発で求める基本構文、虚数単位i/jの扱い、COMPLEX関数やIMPOWERとの連携、ARRAYFORMULAでの一括計算、交流回路や制御工学での実務活用例、よくあるエラー対処法まで実例付きで紹介します。]]></description>
										<content:encoded><![CDATA[
<p>「スプレッドシートで負の数の平方根を出したいのに、SQRTだとエラーになる…」</p>



<p>電気回路のインピーダンスや制御工学の特性方程式を扱っていると、複素数や負の数の平方根を計算したい場面が出てきますよね。実数しか受け付けない通常のSQRT関数では、<code>-9</code> のような負の数を渡した瞬間に <code>#NUM!</code> エラーになってしまいます。</p>



<p>そんなときに頼りになるのがGoogleスプレッドシートのIMSQRT関数です。複素数の文字列を渡すだけで平方根を一発で返してくれるので、負の数でも複素数でもセル1つで処理できますよ。</p>



<p>ExcelのIMSQRT関数と完全互換なので、Excelファイルとやり取りする現場でも安心ですね。COMPLEX関数で組み立てた複素数や、ARRAYFORMULAでの一括計算にも対応しています。</p>



<p>この記事では、スプレッドシートのIMSQRT関数の基本構文と実務での活用例を解説します。よくあるエラーと対処法、IMPOWER関数との検算ペアパターンもしっかり紹介していきますよ。</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-2" checked><label class="toc-title" for="toc-checkbox-2">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">スプレッドシートのIMSQRT関数とは？</a><ol><li><a href="#toc2" tabindex="0">IMSQRT関数とSQRT関数の違い</a></li><li><a href="#toc3" tabindex="0">こんな人におすすめ</a></li></ol></li><li><a href="#toc4" tabindex="0">IMSQRT関数の書き方（構文と引数）</a><ol><li><a href="#toc5" tabindex="0">基本構文</a></li><li><a href="#toc6" tabindex="0">引数の詳細</a></li></ol></li><li><a href="#toc7" tabindex="0">IMSQRT関数の基本的な使い方【3パターン】</a><ol><li><a href="#toc8" tabindex="0">パターン1: 文字列で複素数を直接指定する</a></li><li><a href="#toc9" tabindex="0">パターン2: セル参照で指定する</a></li><li><a href="#toc10" tabindex="0">パターン3: COMPLEX関数と組み合わせる</a></li></ol></li><li><a href="#toc11" tabindex="0">ARRAYFORMULAで複素数列を一括計算する</a></li><li><a href="#toc12" tabindex="0">IMSQRT関数の実務活用例</a><ol><li><a href="#toc13" tabindex="0">活用例1: 交流回路のインピーダンスの平方根</a></li><li><a href="#toc14" tabindex="0">活用例2: 制御工学の特性方程式の解</a></li><li><a href="#toc15" tabindex="0">活用例3: IMPOWERとのペアで検算する</a></li></ol></li><li><a href="#toc16" tabindex="0">IMSQRT関数と一緒に覚えたい複素数関数</a></li><li><a href="#toc17" tabindex="0">IMSQRT関数のよくあるエラーと対処法</a><ol><li><a href="#toc18" tabindex="0">#NUM! エラー（虚数単位の混在・大文字・全角）</a></li><li><a href="#toc19" tabindex="0">#VALUE! エラー（型エラー・全角空白）</a></li><li><a href="#toc20" tabindex="0">戻り値が文字列で計算できない問題</a></li></ol></li><li><a href="#toc21" tabindex="0">ExcelのIMSQRT関数との違いと互換性</a></li><li><a href="#toc22" tabindex="0">IMSQRT関数に関するよくある質問</a><ol><li><a href="#toc23" tabindex="0">Q. IMSQRT関数は実数（普通の数）にも使えますか？</a></li><li><a href="#toc24" tabindex="0">Q. 戻り値の小数が長くて見づらいです</a></li><li><a href="#toc25" tabindex="0">Q. ExcelファイルをGoogleスプレッドシートで開いても動きますか？</a></li><li><a href="#toc26" tabindex="0">Q. 虚数単位に i と j はどちらを使えばいいですか？</a></li><li><a href="#toc27" tabindex="0">Q. 平方根の負の解（マイナス側）も取り出せますか？</a></li></ol></li><li><a href="#toc28" tabindex="0">まとめ</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">スプレッドシートのIMSQRT関数とは？</span></h2>



<p>GoogleスプレッドシートのIMSQRT関数（イマジナリー・スクエア・ルート関数）は、複素数の平方根を返す関数です。エンジニアリング関数（電気・物理・工学系の計算で使う関数群）のひとつに分類されますよ。</p>



<p>読み方は「イマジナリー・スクエア・ルート」または「アイエム・スクエア・ルート」で、英語の「imaginary number（虚数）」の「square root（平方根）」に由来します。複素数「a+bi」に対して、その平方根 √(a+bi) を返してくれるのが役割ですね。</p>



<p>そもそも複素数の平方根は、極形式 r(cosθ + i sinθ) で表すと「絶対値は√r、偏角はθ/2」というシンプルなルールで計算できます。定義式は次のようになります。</p>



<pre class="wp-block-code"><code>√(r(cosθ + i sinθ)) = √r × (cos(θ/2) + i sin(θ/2))</code></pre>



<p>複素数の平方根は本来2つあります。たとえば 3+4i の平方根は 2+i と -2-i の2つですね。IMSQRT関数は、このうち実部が0以上の主値（principal square root）の方だけを返してくれます。</p>



<figure class="wp-block-table"><table><thead><tr><th>入力する複素数</th><th>IMSQRTの戻り値</th></tr></thead><tbody><tr><td><code>"-9"</code></td><td><code>"3i"</code></td></tr><tr><td><code>"-4"</code></td><td><code>"2i"</code></td></tr><tr><td><code>"3+4i"</code></td><td><code>"2+i"</code></td></tr><tr><td><code>"5+12i"</code></td><td><code>"3+2i"</code></td></tr><tr><td><code>"4"</code></td><td><code>"2"</code></td></tr><tr><td><code>"0+1i"</code></td><td><code>"0.707...+0.707...i"</code></td></tr></tbody></table></figure>



<p>IMSQRT関数を使えば、この表の右側にある「複素数の平方根」をサクッと取り出せます。Excelとの互換性も完璧で、Excel 2013以降のすべてのバージョンに対応していますよ。</p>



<p>複素数の平方根は、電気工学のインピーダンス計算・制御工学の特性方程式・振動解析の固有値問題など、複素数演算が必要な場面で活躍する基礎パーツですね。</p>



<h3 class="wp-block-heading"><span id="toc2">IMSQRT関数とSQRT関数の違い</span></h3>



<p>通常のSQRT関数は実数専用なので、負の数を渡すとエラーになります。IMSQRT関数は複素数（実数も含む）に対応しているので、負の数の平方根もスムーズに求められます。</p>



<figure class="wp-block-table"><table><thead><tr><th>関数</th><th>対応する数値</th><th>負の数を渡したとき</th><th>戻り値の型</th></tr></thead><tbody><tr><td>SQRT</td><td>実数のみ</td><td><code>#NUM!</code> エラー</td><td>数値</td></tr><tr><td>IMSQRT</td><td>複素数（実数を含む）</td><td>虚数解を返す</td><td>文字列</td></tr></tbody></table></figure>



<p>たとえば <code>=SQRT(-9)</code> はエラーになりますが、<code>=IMSQRT("-9")</code> は文字列 <code>"3i"</code> を返してくれます。負の数の平方根を扱う場面では、IMSQRT一択ですね。</p>



<h3 class="wp-block-heading"><span id="toc3">こんな人におすすめ</span></h3>



<ul class="wp-block-list"><li>電気・電子系で交流回路のインピーダンス計算をスプレッドシートで完結したい</li><li>制御工学の伝達関数や極・零点を表計算で検証したい</li><li>学校・研究で複素数を含む計算を大量に処理したい</li><li>SQRT関数で <code>#NUM!</code> エラーが出て困っている</li><li>ExcelからGoogleスプレッドシートに移行したばかりで挙動を確認したい</li></ul>



<h2 class="wp-block-heading"><span id="toc4">IMSQRT関数の書き方（構文と引数）</span></h2>



<h3 class="wp-block-heading"><span id="toc5">基本構文</span></h3>



<p>IMSQRT関数の構文はとてもシンプルで、引数は1つだけです。</p>



<pre class="wp-block-code"><code>=IMSQRT(複素数)</code></pre>



<h3 class="wp-block-heading"><span id="toc6">引数の詳細</span></h3>



<figure class="wp-block-table"><table><thead><tr><th>引数</th><th>必須/任意</th><th>説明</th></tr></thead><tbody><tr><td>複素数（inumber）</td><td>必須</td><td>平方根を求めたい複素数。<code>"x+yi"</code> または <code>"x+yj"</code> の文字列で指定する</td></tr></tbody></table></figure>



<p>引数には「&#8221;3+4i&#8221;」や「&#8221;3+4j&#8221;」のような複素数文字列を直接渡せます。COMPLEX関数（実数と虚数から複素数を組み立てる関数）の結果や、複素数が入ったセルの参照も指定できますよ。</p>



<p>虚数単位は小文字の <code>i</code> または <code>j</code> のどちらでも受け付けます。数学では <code>i</code>、電気工学では <code>j</code> が使われる慣習ですね。IMSQRT関数はどちらでも同じように動作してくれます。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>TIP</strong></p><p>戻り値は元の入力と同じ虚数単位で返されます。「3+4i」を渡せば「2+i」、「3+4j」を渡せば「2+j」が返るので、表記の統一性も保たれますよ。</p></blockquote>



<p>使うときに押さえておきたいポイントは、次の3点です。</p>



<ol class="wp-block-list"><li>引数は<strong>必ずダブルクォーテーションで囲んだ文字列</strong>か、複素数が入ったセル参照で渡す</li><li>虚数単位は <code>i</code> と <code>j</code> の両方が使えるが、<strong>混在はNG</strong>（例: <code>"3+4ij"</code> のような指定はエラー）</li><li>戻り値も<strong>文字列型の複素数</strong>（<code>"a+bi"</code> 形式）なので、そのまま四則演算はできない</li></ol>



<p>3点目は最初につまずきやすいポイントです。戻り値をさらに計算に使いたい場合は、IMABS関数（絶対値）やIMREAL関数（実部を取り出す関数）など他のIM系関数と組み合わせる必要がありますよ。</p>



<h2 class="wp-block-heading"><span id="toc7">IMSQRT関数の基本的な使い方【3パターン】</span></h2>



<p>IMSQRT関数の基本パターンを3つに分けて紹介します。いずれも同じ関数ですが、入力方法によって使い勝手が変わります。</p>



<h3 class="wp-block-heading"><span id="toc8">パターン1: 文字列で複素数を直接指定する</span></h3>



<p>もっともシンプルなのが、関数内に直接複素数を書く方法です。</p>



<pre class="wp-block-code"><code>=IMSQRT(&quot;3+4i&quot;)
→ 2+i</code></pre>



<p>手計算で確認すると (2+i)² = 4 + 4i + i² = 4 + 4i &#8211; 1 = 3+4i ですね。元の複素数に戻るので、計算が合っています。</p>



<p>負の実数だけを渡すこともできます。SQRT関数でエラーになる場合の代替として覚えておきましょう。</p>



<pre class="wp-block-code"><code>=IMSQRT(&quot;-9&quot;)
→ 3i</code></pre>



<p><code>SQRT(-9)</code> では <code>#NUM!</code> エラーになりますが、IMSQRTなら虚数解をきちんと返してくれますよ。</p>



<h3 class="wp-block-heading"><span id="toc9">パターン2: セル参照で指定する</span></h3>



<p>複素数をセルに入力しておき、別のセルでIMSQRTを呼び出す方法です。A2セルに <code>5+12i</code> と入力しておき、B2セルに次の式を入れます。</p>



<pre class="wp-block-code"><code>=IMSQRT(A2)
→ 3+2i</code></pre>



<p>複数行の複素数データをまとめて処理したいときは、このセル参照方式が便利です。オートフィルで一気に全行計算できるので、感度解析やパラメータスイープに向いています。</p>



<h3 class="wp-block-heading"><span id="toc10">パターン3: COMPLEX関数と組み合わせる</span></h3>



<p>実部と虚部が別々のセルに入っている場合は、COMPLEX関数で複素数を組み立ててから渡すのがおすすめです。</p>



<pre class="wp-block-code"><code>=IMSQRT(COMPLEX(3, 4))
→ 2+i</code></pre>



<p>A2に実部、B2に虚部を入れているなら、<code>=IMSQRT(COMPLEX(A2, B2))</code> と書きます。データ入力がシンプルになり、文字列の書式ミスも減らせるので、実務ではこの組み合わせが一番安定しますよ。</p>



<figure class="wp-block-table"><table><thead><tr><th>パターン</th><th>向いている場面</th></tr></thead><tbody><tr><td>文字列で直接入力</td><td>単発の計算・動作確認</td></tr><tr><td>セル参照</td><td>複数行のデータを一気に処理したいとき</td></tr><tr><td>COMPLEX関数との組み合わせ</td><td>実部・虚部が別列に分かれているデータ</td></tr></tbody></table></figure>



<h2 class="wp-block-heading"><span id="toc11">ARRAYFORMULAで複素数列を一括計算する</span></h2>



<p>スプレッドシートには ARRAYFORMULA 関数（数式を範囲全体に展開する関数）があり、複数行の複素数を一発で平方根に変換できます。Excelのスピル機能に相当する仕組みですね。</p>



<p>A2:A10 に複素数のリストが並んでいるとします。B2 に次の式を入れるだけで、B2:B10 全体に平方根が一気に展開されます。</p>



<pre class="wp-block-code"><code>=ARRAYFORMULA(IMSQRT(A2:A10))</code></pre>



<p>オートフィルで1行ずつコピーする手間が省けるので、大量の複素数データを処理するときに便利ですよ。たとえば伝送線路の周波数スイープ計算で、各周波数のインピーダンスの平方根を一気に求めたい場面で重宝します。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>TIP</strong></p><p>ARRAYFORMULA は範囲内に1つでも不正な複素数があると、その行で <code>#NUM!</code> や <code>#VALUE!</code> を返します。<code>IFERROR</code> で包んでおくと、エラー行があっても他の行の計算は止まりませんよ。</p></blockquote>



<p>エラー対策まで仕込むなら、こんな書き方になります。</p>



<pre class="wp-block-code"><code>=ARRAYFORMULA(IFERROR(IMSQRT(A2:A10), &quot;形式エラー&quot;))</code></pre>



<p>エラー時に「形式エラー」と表示されるので、どの行が原因なのかも一目でわかりますね。</p>



<h2 class="wp-block-heading"><span id="toc12">IMSQRT関数の実務活用例</span></h2>



<p>IMSQRT関数は学術的な関数に見えますが、実務でも使いどころがあります。代表的な3つのシーンを紹介しますね。</p>



<h3 class="wp-block-heading"><span id="toc13">活用例1: 交流回路のインピーダンスの平方根</span></h3>



<p>交流回路では抵抗とリアクタンス（コンデンサやコイルが交流に対して示す抵抗成分）を複素数として扱います。電気系では虚数単位として <code>j</code> を使うのが慣例ですね。</p>



<p>抵抗R = 3Ω、リアクタンスX = 4Ω のときのインピーダンスは Z = 3+4j と書けます。このZの平方根は次のように求められます。</p>



<pre class="wp-block-code"><code>A2: =COMPLEX(3, 4, &quot;j&quot;)    ← Z = 3+4j
B2: =IMSQRT(A2)            ← √Z = 2+j</code></pre>



<p>伝送線路の特性インピーダンス Z₀ = √(Z/Y) を求める場面や、共振回路の解析でインピーダンスの平方根が必要になる場面で、IMSQRT関数が一瞬で答えを出してくれます。手計算だと極形式への変換が必要な計算も、セル1つで完結するのは大きな魅力ですよね。</p>



<h3 class="wp-block-heading"><span id="toc14">活用例2: 制御工学の特性方程式の解</span></h3>



<p>制御系の極（ポール）や零点（ゼロ）を求める際、2次方程式の解として複素数の平方根が登場します。判別式が負になるケース（振動系で虚数解が出るケース）でも、IMSQRT関数ならそのまま処理できますね。</p>



<p>たとえば、特性方程式 <code>s² + 2ζω_n s + ω_n² = 0</code> の解は <code>s = -ζω_n ± ω_n√(ζ²-1)</code> です。減衰比 ζ が1未満のときは平方根の中身が負になりますよね。</p>



<pre class="wp-block-code"><code>A2: 0.5    ← 減衰比 ζ
B2: 10     ← 固有角周波数 ω_n
C2: =IMSQRT(COMPLEX(A2^2-1, 0))
→ 0.866...i</code></pre>



<p>判別式が負の値（ζ²-1 = -0.75）になるシーンでも、IMSQRTが虚数解を返してくれるので、SQRTのように <code>#NUM!</code> エラーで止まりません。スプレッドシートで感度解析やパラメータスイープをするなら、IMSQRTで解析式をそのままセルに落とし込めますよ。</p>



<h3 class="wp-block-heading"><span id="toc15">活用例3: IMPOWERとのペアで検算する</span></h3>



<p>手計算で求めた複素数の平方根が合っているかを確認したいときも、IMSQRTが便利です。<a href="https://mashukabu.com/spreadsheet-impower-function/">IMPOWER関数</a>（複素数のべき乗を求める関数）と組み合わせれば、検算の精度をさらに上げられますね。</p>



<p>IMSQRTで求めた平方根をIMPOWERで2乗して、元の値に戻るかを確認する流れです。</p>



<pre class="wp-block-code"><code>=IMPOWER(IMSQRT(&quot;3+4i&quot;), 2)
→ 3+4i（元の値に戻る）

=IMPOWER(IMSQRT(&quot;-4+6i&quot;), 2)
→ -4+6i（元の値に戻る）</code></pre>



<p>数値誤差で末尾の桁が微妙にずれることはありますが、ROUND関数で丸めれば見た目もきれいになります。学習用シートや、計算結果のクロスチェックに使えるパターンですよ。</p>



<h2 class="wp-block-heading"><span id="toc16">IMSQRT関数と一緒に覚えたい複素数関数</span></h2>



<p>IMSQRT単体でも十分便利ですが、他の複素数関数（IM〜で始まる関数群）と組み合わせるとスプレッドシートで本格的な複素数計算ができるようになります。</p>



<figure class="wp-block-table"><table><thead><tr><th>関数</th><th>機能</th><th>IMSQRTとの典型的な組み合わせ</th></tr></thead><tbody><tr><td><a href="https://mashukabu.com/spreadsheet-complex-function/">COMPLEX</a></td><td>実部・虚部から複素数を作成</td><td>IMSQRTへの入力作成</td></tr><tr><td><a href="https://mashukabu.com/spreadsheet-impower-function/">IMPOWER</a></td><td>複素数のべき乗</td><td>IMSQRTの逆演算で検証</td></tr><tr><td><a href="https://mashukabu.com/spreadsheet-improduct-function/">IMPRODUCT</a></td><td>複素数の積</td><td>複数の複素数の積の平方根</td></tr><tr><td>IMSUM</td><td>複素数の和</td><td><code>=IMSQRT(IMSUM(Z1, Z2))</code></td></tr><tr><td><a href="https://mashukabu.com/spreadsheet-imabs-function/">IMABS</a></td><td>複素数の絶対値（実数）</td><td>戻り値を実数に変換して丸める</td></tr><tr><td><a href="https://mashukabu.com/spreadsheet-imreal-function/">IMREAL</a></td><td>複素数の実部を取り出す</td><td>戻り値の実部だけを使う計算</td></tr><tr><td><a href="https://mashukabu.com/spreadsheet-imaginary-function/">IMAGINARY</a></td><td>複素数の虚部を取り出す</td><td>戻り値の虚部だけを使う計算</td></tr><tr><td><a href="https://mashukabu.com/spreadsheet-imargument-function/">IMARGUMENT</a></td><td>複素数の偏角（ラジアン）</td><td>極形式での確認</td></tr></tbody></table></figure>



<p>たとえば <code>=IMREAL(IMSQRT("3+4i"))</code> で実部だけ、<code>=IMAGINARY(IMSQRT("3+4i"))</code> で虚部だけを数値として取り出せます。戻り値が文字列で扱いにくいときは、この2関数で分解してから続きの計算をするのが定石ですよ。</p>



<p>複素数のsec（正割）やsech（双曲正割）など、より高度な三角関数を扱いたい場面では、<a href="https://mashukabu.com/spreadsheet-imsec-function/">IMSEC関数</a>や<a href="https://mashukabu.com/spreadsheet-imsech-function/">IMSECH関数</a>も合わせて確認してみてくださいね。</p>



<h2 class="wp-block-heading"><span id="toc17">IMSQRT関数のよくあるエラーと対処法</span></h2>



<p>IMSQRT関数で遭遇しやすいエラーと、その原因・対処法をまとめました。</p>



<figure class="wp-block-table"><table><thead><tr><th>エラー</th><th>主な原因</th><th>対処法</th></tr></thead><tbody><tr><td><code>#NUM!</code></td><td>虚数単位 <code>i</code> と <code>j</code> の混在、大文字 <code>I</code>・<code>J</code>、全角文字、不正な複素数形式</td><td>形式を <code>x+yi</code> か <code>x+yj</code> のいずれかに統一する</td></tr><tr><td><code>#VALUE!</code></td><td>引数が複素数として解釈できない文字列（全角や空白混入など）</td><td>半角で入力し、余計な空白を削除する</td></tr><tr><td>意図しない結果</td><td>セル参照先が単なる数値で虚部が認識されていない</td><td>COMPLEX関数で明示的に複素数化する</td></tr><tr><td><code>#NAME?</code></td><td>関数名のスペルミス（IMSQRT以外の綴り）</td><td>関数名のスペルを確認する</td></tr></tbody></table></figure>



<h3 class="wp-block-heading"><span id="toc18">#NUM! エラー（虚数単位の混在・大文字・全角）</span></h3>



<p>複素数として認識できない文字列を渡したときに発生します。よくあるパターンは次のとおりです。</p>



<pre class="wp-block-code"><code>=IMSQRT(&quot;3+4I&quot;)    → #NUM!（大文字のIは不可）
=IMSQRT(&quot;3+4ij&quot;)   → #NUM!（i・j混在は不可）
=IMSQRT(&quot;３+４i&quot;)  → #NUM!（全角数字は不可）
=IMSQRT(&quot;3+4k&quot;)    → #NUM!（i・j以外の文字は不可）</code></pre>



<p>対処法は、複素数文字列を必ず半角の <code>a+bi</code> または <code>a+bj</code> の形式にすることです。虚数単位は小文字限定なので、CapsLock がオンになっていないか確認してくださいね。</p>



<h3 class="wp-block-heading"><span id="toc19">#VALUE! エラー（型エラー・全角空白）</span></h3>



<p>スペースが入っている場合（例: <code>"3 + 4i"</code>）や、数値型のセルから複素数として解釈できない値を渡した場合に発生します。</p>



<pre class="wp-block-code"><code>=IMSQRT(&quot;3 + 4i&quot;)  → #VALUE!（半角空白が入っているとNG）
=IMSQRT(TRUE)      → #VALUE!（論理値は不可）</code></pre>



<p>Webサイトや論文PDFからコピペで入力した場合は、全角記号や余計な空白が混入していないか必ず確認しましょう。見た目が似ているので気づきにくいですが、スプレッドシートは半角文字しか複素数の要素として認識してくれませんよ。</p>



<h3 class="wp-block-heading"><span id="toc20">戻り値が文字列で計算できない問題</span></h3>



<p>IMSQRT関数のもう1つの落とし穴が、戻り値の型です。結果は見た目が数字でも<strong>文字列</strong>なので、<code>=IMSQRT("4")+1</code> のような計算を書くと <code>#VALUE!</code> エラーになります。</p>



<p>戻り値を数値として扱いたいときは、IMREAL関数（実部を数値で返す）かIMABS関数（絶対値を数値で返す）で一度実数に変換してから計算してくださいね。</p>



<pre class="wp-block-code"><code>=IMREAL(IMSQRT(&quot;4&quot;)) + 1
→ 3（数値として計算できる）

=ROUND(IMABS(IMSQRT(&quot;3+4i&quot;)), 4)
→ 2.2361（絶対値を4桁で丸める）</code></pre>



<p>虚部だけ取り出したいときは IMAGINARY関数を使います。3つの関数（IMREAL・IMAGINARY・IMABS）を覚えておくと、戻り値が文字列でも困らなくなりますよ。</p>



<h2 class="wp-block-heading"><span id="toc21">ExcelのIMSQRT関数との違いと互換性</span></h2>



<p>GoogleスプレッドシートのIMSQRT関数は、ExcelのIMSQRT関数と仕様が完全に一致しています。構文・引数・戻り値の形式・エラー条件まで同じですよ。</p>



<p>ExcelファイルをGoogleスプレッドシートで開いてもIMSQRT関数はそのまま動作します。逆にスプレッドシートで作った数式をExcelで開いても問題ありませんね。</p>



<figure class="wp-block-table"><table><thead><tr><th>項目</th><th>スプレッドシート</th><th>Excel</th></tr></thead><tbody><tr><td>構文</td><td><code>=IMSQRT(複素数)</code></td><td><code>=IMSQRT(複素数)</code></td></tr><tr><td>戻り値の型</td><td>文字列</td><td>文字列</td></tr><tr><td>虚数単位</td><td><code>i</code> または <code>j</code></td><td><code>i</code> または <code>j</code></td></tr><tr><td>一括計算</td><td>ARRAYFORMULA</td><td>スピル（Microsoft 365）/ Ctrl+Shift+Enter</td></tr><tr><td>対応バージョン</td><td>全バージョン</td><td>Excel 2013以降・Microsoft 365</td></tr></tbody></table></figure>



<p>スプレッドシート固有の差は ARRAYFORMULA で配列展開する点くらいですね。Excelの場合はMicrosoft 365のスピル機能、または旧バージョンでは Ctrl+Shift+Enter で配列数式として確定する形になります。</p>



<p>両方を行き来する環境なら、関数の挙動はほぼ同じと考えて大丈夫ですよ。詳しいExcel版の解説は<a href="https://mashukabu.com/excel-function-howto-use-imsqrt/">ExcelのIMSQRT関数の使い方</a>も参考にしてみてくださいね。</p>



<h2 class="wp-block-heading"><span id="toc22">IMSQRT関数に関するよくある質問</span></h2>



<h3 class="wp-block-heading"><span id="toc23">Q. IMSQRT関数は実数（普通の数）にも使えますか？</span></h3>



<p>A. はい、使えます。<code>=IMSQRT("4")</code> は文字列 <code>"2"</code> を返します。ただし戻り値は文字列型なので、引き続き実数として計算するには IMREAL 関数で実部を取り出してください。</p>



<pre class="wp-block-code"><code>=IMREAL(IMSQRT(&quot;4&quot;))
→ 2（数値）</code></pre>



<h3 class="wp-block-heading"><span id="toc24">Q. 戻り値の小数が長くて見づらいです</span></h3>



<p>A. IMABS関数で絶対値（実数）に変換してからROUND関数で丸めるか、IMREAL関数・IMAGINARY関数で実部・虚部を取り出してそれぞれ丸めましょう。</p>



<pre class="wp-block-code"><code>=ROUND(IMREAL(IMSQRT(&quot;1+i&quot;)), 4)
→ 1.0987

=ROUND(IMAGINARY(IMSQRT(&quot;1+i&quot;)), 4)
→ 0.4551</code></pre>



<h3 class="wp-block-heading"><span id="toc25">Q. ExcelファイルをGoogleスプレッドシートで開いても動きますか？</span></h3>



<p>A. はい、動きます。IMSQRT関数は両方のプラットフォームで完全互換なので、<code>.xlsx</code> ファイルを Sheets で開いた場合でも、関数の結果はそのまま反映されますよ。</p>



<h3 class="wp-block-heading"><span id="toc26">Q. 虚数単位に i と j はどちらを使えばいいですか？</span></h3>



<p>A. 数学・物理系の慣例では <code>i</code>、電気・制御系の慣例では <code>j</code> が使われます。どちらもIMSQRTは受け付けますが、<strong>同じブック内では統一</strong>したほうが混乱がありません。セル参照で計算を連結する場合、片方は <code>i</code>・もう片方は <code>j</code> だと <code>#NUM!</code> エラーになりますよ。</p>



<h3 class="wp-block-heading"><span id="toc27">Q. 平方根の負の解（マイナス側）も取り出せますか？</span></h3>



<p>A. IMSQRT関数は主値（実部 ≥ 0 の方）だけを返すので、もう一つの解（マイナス側）は直接は取り出せません。ただし、平方根の2つの解は符号が反転するだけなので、IMSQRTの結果に -1 を掛ければ求められますよ。</p>



<pre class="wp-block-code"><code>A2: =IMSQRT(&quot;3+4i&quot;)        ← 主値 2+i
B2: =IMPRODUCT(A2, &quot;-1&quot;)   ← もう一つの解 -2-i</code></pre>



<p>IMPRODUCT関数で -1 を掛けると、複素数全体の符号が反転します。</p>



<h2 class="wp-block-heading"><span id="toc28">まとめ</span></h2>



<p>GoogleスプレッドシートのIMSQRT関数は、複素数の平方根を一発で返してくれる便利なエンジニアリング関数です。ポイントをおさらいしておきましょう。</p>



<ul class="wp-block-list"><li>構文は <code>=IMSQRT(複素数)</code> で引数は1つだけ</li><li>引数は <code>"x+yi"</code> または <code>"x+yj"</code> の文字列か、複素数が入ったセル参照で渡す</li><li>SQRT関数がエラーになる負の数も、IMSQRTなら虚数解として処理できる</li><li>主値（実部 ≥ 0 の方）だけを返す。もう一つの解は -1 倍で取り出せる</li><li>虚数単位 <code>i</code> と <code>j</code> は混在させず、ブック内で統一する</li><li>戻り値は文字列型なので、さらに計算を続けるなら IMREAL・IMABS・IMAGINARY 関数と組み合わせる</li><li>実部・虚部が別セルにあるときは COMPLEX 関数で組み立ててから渡すと扱いやすい</li><li>ARRAYFORMULA で複数行の複素数を一括処理できる</li><li>IMPOWER 関数で2乗すれば、元の複素数に戻るかを検算できる</li><li>大文字の <code>I</code>・<code>J</code>、全角文字、<code>i</code>・<code>j</code> 混在は <code>#NUM!</code> エラー</li><li>半角空白の混入や論理値の引数は <code>#VALUE!</code> エラー</li><li>ExcelのIMSQRT関数と完全互換（Excel 2013以降）</li></ul>



<p>交流回路や制御工学の計算を手作業でやっていた方は、ぜひスプレッドシートにIMSQRT関数を組み込んで作業時間を短縮してみてくださいね。複素数関連の他の関数（COMPLEX・IMPOWER・IMABS など）とセットで覚えておくと、さらに応用が広がりますよ。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://mashukabu.com/spreadsheet-imsqrt-function/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>スプレッドシートのIMPRODUCT関数の使い方｜複素数の積を一発で計算</title>
		<link>https://mashukabu.com/spreadsheet-improduct-function/</link>
					<comments>https://mashukabu.com/spreadsheet-improduct-function/#respond</comments>
		
		<dc:creator><![CDATA[まっしゅ]]></dc:creator>
		<pubDate>Wed, 29 Apr 2026 11:24:30 +0000</pubDate>
				<category><![CDATA[Googleスプレッドシート]]></category>
		<category><![CDATA[IMPRODUCT]]></category>
		<category><![CDATA[エンジニアリング関数]]></category>
		<category><![CDATA[スプレッドシート]]></category>
		<category><![CDATA[掛け算]]></category>
		<category><![CDATA[複素数]]></category>
		<guid isPermaLink="false">https://mashukabu.com/?p=6350</guid>

					<description><![CDATA[GoogleスプレッドシートのIMPRODUCT関数の使い方を解説。複素数（a+bi）同士の掛け算を一発で求める基本構文、虚数単位i/jの扱い、COMPLEX関数やIMABS・IMARGUMENTとの連携、最大255個までの複素数を一気に掛け合わせる方法、電気回路のインピーダンス合成や信号処理での活用例、ARRAYFORMULAでの一括処理、よくあるエラーと対処法まで実例付きで紹介します。]]></description>
										<content:encoded><![CDATA[
<p>「スプレッドシートで複素数同士の掛け算をしたいけど、(a+bi)(c+di)を展開して i² = -1 で整理するのが面倒&#8230;」</p>



<p>スプレッドシートで複素数を扱っていると、2つ以上の複素数を掛け合わせたい場面がありますよね。実部と虚部に分けて展開して、i²の置き換えを忘れずに、最後にもう一度複素数の形に組み立て直す&#8230;という手順を毎回踏むのは、ちょっと大変です。</p>



<p>そんなときに頼りになるのがGoogleスプレッドシートのIMPRODUCT関数です。複素数を並べて渡すだけで、それらの積を一発で返してくれるので、インピーダンス合成やフーリエ変換の数式が一気にすっきりしますよ。</p>



<p>ExcelのIMPRODUCT関数と完全互換なので、Excelファイルとやり取りする現場でも安心ですね。COMPLEX関数で作った複素数や、IMSUM・IMPOWERの演算結果からも、そのまま積を計算できます。</p>



<p>この記事では、スプレッドシートのIMPRODUCT関数の基本構文と実務での活用例を解説します。最大255個まで一気に掛けられる仕様や、よくあるエラーと対処法もしっかり紹介していきますよ。</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-3" checked><label class="toc-title" for="toc-checkbox-3">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">スプレッドシートのIMPRODUCT関数とは？</a></li><li><a href="#toc2" tabindex="0">IMPRODUCT関数の書き方（構文と引数）</a><ol><li><a href="#toc3" tabindex="0">基本構文</a></li><li><a href="#toc4" tabindex="0">引数の詳細</a></li></ol></li><li><a href="#toc5" tabindex="0">IMPRODUCT関数の基本的な使い方</a><ol><li><a href="#toc6" tabindex="0">文字列で複素数を直接指定する</a></li><li><a href="#toc7" tabindex="0">セル参照で複素数を指定する</a></li><li><a href="#toc8" tabindex="0">3つ以上の複素数を一気に掛ける</a></li><li><a href="#toc9" tabindex="0">COMPLEX関数と組み合わせる</a></li><li><a href="#toc10" tabindex="0">ARRAYFORMULAで複数行を一括処理する</a></li><li><a href="#toc11" tabindex="0">REDUCEで列を畳み込む</a></li></ol></li><li><a href="#toc12" tabindex="0">IMPRODUCT関数の実務活用例</a><ol><li><a href="#toc13" tabindex="0">活用例1: 共役複素数で絶対値の2乗を求める</a></li><li><a href="#toc14" tabindex="0">活用例2: 電気回路のインピーダンス合成</a></li><li><a href="#toc15" tabindex="0">活用例3: 伝達関数の段接続</a></li><li><a href="#toc16" tabindex="0">活用例4: 信号処理のフィルタ係数の合成</a></li><li><a href="#toc17" tabindex="0">活用例5: 累積積をリスト化する</a></li></ol></li><li><a href="#toc18" tabindex="0">IMPRODUCT関数とCOMPLEX関数群の関係</a></li><li><a href="#toc19" tabindex="0">IMPRODUCT関数のよくあるエラーと対処法</a><ol><li><a href="#toc20" tabindex="0">#NUM! エラー（複素数の形式エラー）</a></li><li><a href="#toc21" tabindex="0">#VALUE! エラー（虚数単位の混在）</a></li><li><a href="#toc22" tabindex="0">#VALUE! エラー（引数の型エラー）</a></li><li><a href="#toc23" tabindex="0">結果が極端な値になる</a></li><li><a href="#toc24" tabindex="0">IFERRORでまとめてエラーを吸収する</a></li></ol></li><li><a href="#toc25" tabindex="0">IMPRODUCT関数とExcelの互換性</a></li><li><a href="#toc26" tabindex="0">複素数関連の関数一覧</a></li><li><a href="#toc27" tabindex="0">まとめ</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">スプレッドシートのIMPRODUCT関数とは？</span></h2>



<p>GoogleスプレッドシートのIMPRODUCT関数（イマジナリー・プロダクト関数）は、複素数同士の積（掛け算の結果）を返す関数です。エンジニアリング関数（電気・物理・工学系の計算で使う関数群）のひとつに分類されますよ。</p>



<p>読み方は「イマジナリー・プロダクト」または「アイエム・プロダクト」で、英語の「imaginary number（虚数）」の「product（積）」に由来します。複素数「a+bi」と「c+di」を渡すと、(a+bi)×(c+di) を返してくれるのが役割ですね。</p>



<p>そもそも複素数の積とは、実数の掛け算を複素数全体に拡張したものです。展開して i² = -1 に置き換えると、次のような形になります。</p>



<pre class="wp-block-code"><code>(a+bi)(c+di) = (ac − bd) + (ad + bc)i</code></pre>



<p>実部は「ac − bd」、虚部は「ad + bc」というシンプルなルールですね。極形式で見ると、絶対値同士は掛け算、偏角（角度）同士は足し算になるという性質も持っています。</p>



<figure class="wp-block-table"><table><thead><tr><th>複素数の組み合わせ</th><th>IMPRODUCTの結果</th><th>内部計算</th></tr></thead><tbody><tr><td>(2+3i) × (1+4i)</td><td>-10+11i</td><td>2−12 と 8+3</td></tr><tr><td>(1+1i) × (1−1i)</td><td>2+0i</td><td>共役同士の積（絶対値の2乗）</td></tr><tr><td>(3+0i) × (0+2i)</td><td>0+6i</td><td>実数 × 純虚数</td></tr><tr><td>(2+0i) × (3+0i) × (4+0i)</td><td>24+0i</td><td>実数3つの積</td></tr><tr><td>(1+1i) × (1+1i) × (1+1i)</td><td>-2+2i</td><td>(1+i)³</td></tr></tbody></table></figure>



<p>IMPRODUCT関数を使えば、この表の右側にある「複素数の積」をサクッと取り出せます。Excelとの互換性も完璧で、Excel 2007以降のすべてのバージョンに対応していますよ。</p>



<p>複素数の積は、電気工学のインピーダンス合成・信号処理の伝達関数の連結・量子力学の状態ベクトルの内積など、複素数演算が必要な場面で活躍する基礎パーツですね。</p>



<h2 class="wp-block-heading"><span id="toc2">IMPRODUCT関数の書き方（構文と引数）</span></h2>



<h3 class="wp-block-heading"><span id="toc3">基本構文</span></h3>



<pre class="wp-block-code"><code>=IMPRODUCT(複素数1, [複素数2, ...])</code></pre>



<p>引数は最低1つ必要で、最大255個まで指定できます。</p>



<h3 class="wp-block-heading"><span id="toc4">引数の詳細</span></h3>



<figure class="wp-block-table"><table><thead><tr><th>引数</th><th>必須/任意</th><th>説明</th></tr></thead><tbody><tr><td>複素数1（inumber1）</td><td>必須</td><td>積を求めたい1つ目の複素数。文字列またはセル参照で指定する</td></tr><tr><td>複素数2以降（inumber2, &#8230;）</td><td>任意</td><td>2つ目以降の複素数。最大255個まで指定可能</td></tr></tbody></table></figure>



<p>引数には「&#8221;2+3i&#8221;」や「&#8221;2+3j&#8221;」のような複素数文字列を直接渡せます。COMPLEX関数（実数と虚数から複素数を作成する関数）の結果や、複素数が入ったセルの参照、セル範囲も指定できますよ。</p>



<p>虚数単位は小文字の「i」または「j」のどちらでも受け付けます。数学では「i」、電気工学では「j」が使われる慣習ですね。IMPRODUCT関数はどちらでも同じように動作してくれます。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>TIP</strong></p><p>戻り値は「i」と「j」の混在を許しません。引数に「i」と「j」が混ざっていると #VALUE! エラーになるので、計算前に表記を揃えておきましょう。</p></blockquote>



<p>引数1つだけを渡した場合は、その複素数自身が返ります。実部だけの数（虚部0）を渡すと、通常の掛け算と同じ結果になりますよ。</p>



<h2 class="wp-block-heading"><span id="toc5">IMPRODUCT関数の基本的な使い方</span></h2>



<h3 class="wp-block-heading"><span id="toc6">文字列で複素数を直接指定する</span></h3>



<p>複素数文字列をそのまま引数に渡してみましょう。</p>



<pre class="wp-block-code"><code>=IMPRODUCT(&quot;2+3i&quot;, &quot;1+4i&quot;)</code></pre>



<p>結果は「-10+11i」になります。手計算で確認すると (2+3i)(1+4i) = 2+8i+3i+12i² = 2+11i-12 = -10+11i なので、計算が合っていますね。</p>



<p>実部だけの複素数（虚部0）を渡すと、通常の掛け算と同じ結果になります。</p>



<pre class="wp-block-code"><code>=IMPRODUCT(&quot;3+0i&quot;, &quot;4+0i&quot;)</code></pre>



<p>結果は「12」です。3 × 4 = 12 という基本的な値が返ってきますね。</p>



<p>共役複素数同士を掛けると、絶対値の2乗が実数で得られます。</p>



<pre class="wp-block-code"><code>=IMPRODUCT(&quot;3+4i&quot;, &quot;3-4i&quot;)</code></pre>



<p>結果は「25」になります。これは |3+4i|² = 3²+4² = 25 と一致しますね。共役複素数の積は、複素数の大きさを求めるときの定番パターンです。</p>



<h3 class="wp-block-heading"><span id="toc7">セル参照で複素数を指定する</span></h3>



<p>実務ではセルに入った複素数を扱う場面が多いですよね。A2に「1+2i」、B2に「3+4i」が入っている場合は次のように書きます。</p>



<pre class="wp-block-code"><code>=IMPRODUCT(A2, B2)</code></pre>



<p>結果は「-5+10i」になります。セル参照を渡すだけで、入っている複素数の積を取り出せますよ。</p>



<h3 class="wp-block-heading"><span id="toc8">3つ以上の複素数を一気に掛ける</span></h3>



<p>IMPRODUCT関数は最大255個まで複素数を受け付けます。3つ以上をまとめて掛けたいときは、カンマ区切りで並べていきましょう。</p>



<pre class="wp-block-code"><code>=IMPRODUCT(&quot;1+1i&quot;, &quot;1+1i&quot;, &quot;1+1i&quot;)</code></pre>



<p>結果は「-2+2i」になります。(1+i)³ を1セルで一気に計算できますね。同じ複素数を何度も掛けるならIMPOWER関数の方が読みやすいですが、それぞれ異なる複素数を掛けるならIMPRODUCTが便利です。</p>



<pre class="wp-block-code"><code>=IMPRODUCT(A2, B2, C2, D2)</code></pre>



<p>A2〜D2に4つの複素数が入っていれば、それらの積が一発で求まります。インピーダンスの段接続のように、複数の素子を順番に掛けていく計算で重宝しますよ。</p>



<h3 class="wp-block-heading"><span id="toc9">COMPLEX関数と組み合わせる</span></h3>



<p><a href="https://mashukabu.com/spreadsheet-complex-function/">COMPLEX関数</a>で作った複素数の積を、その場で計算することもできます。</p>



<pre class="wp-block-code"><code>=IMPRODUCT(COMPLEX(2, 3), COMPLEX(1, 4))</code></pre>



<p>結果は「-10+11i」、つまり「IMPRODUCT(&#8220;2+3i&#8221;, &#8220;1+4i&#8221;)」と同じですね。COMPLEX(2, 3)が内部で「2+3i」を作り、IMPRODUCT関数がその積を返してくれます。</p>



<p>実部と虚部がセルに分かれているデータを扱うときに便利な書き方ですよ。</p>



<h3 class="wp-block-heading"><span id="toc10">ARRAYFORMULAで複数行を一括処理する</span></h3>



<p>複素数のリストから一気に積の列を作りたい場面もありますよね。そんなときはARRAYFORMULA関数（数式を範囲全体に展開する関数）と組み合わせます。</p>



<pre class="wp-block-code"><code>=ARRAYFORMULA(IMPRODUCT(A2:A10, B2:B10))</code></pre>



<p>A列とB列の同じ行同士の積を、対応する行ごとに一発で計算できますよ。フーリエ変換の係数同士を掛け合わせるときに重宝しますね。</p>



<p>ただしARRAYFORMULA + IMPRODUCT で「列全体を1つの積にまとめる」ことはできません。範囲をすべて掛け合わせたい場合は、後述のREDUCEを使う方法が便利ですよ。</p>



<h3 class="wp-block-heading"><span id="toc11">REDUCEで列を畳み込む</span></h3>



<p>A2:A10 に並んだ複素数すべての積をまとめて求めたいときは、REDUCE関数（範囲を順に畳み込む関数）と組み合わせます。</p>



<pre class="wp-block-code"><code>=REDUCE(&quot;1+0i&quot;, A2:A10, LAMBDA(acc, x, IMPRODUCT(acc, x)))</code></pre>



<p>初期値の「1+0i」から始めて、A2:A10 の複素数を順番に掛けていく書き方ですね。可変長のリストに対しても、一発で総積を計算できますよ。</p>



<h2 class="wp-block-heading"><span id="toc12">IMPRODUCT関数の実務活用例</span></h2>



<h3 class="wp-block-heading"><span id="toc13">活用例1: 共役複素数で絶対値の2乗を求める</span></h3>



<p>複素数 z=a+bi の絶対値の2乗は、共役複素数 z*=a-bi との積として求められます。IMPRODUCT関数とIMCONJUGATE関数（共役複素数を返す関数）を組み合わせれば、シート上で素直に計算できますよ。</p>



<p>A2に「3+4i」が入っているとします。</p>



<pre class="wp-block-code"><code>B2: =IMCONJUGATE(A2)         ← 共役 3-4i
C2: =IMPRODUCT(A2, B2)       ← |z|² = 25</code></pre>



<p>C2の結果は実数の「25」になりますね。IMABS関数（絶対値）で求めた値の2乗と一致するので、検算用としても便利です。</p>



<h3 class="wp-block-heading"><span id="toc14">活用例2: 電気回路のインピーダンス合成</span></h3>



<p>交流回路のインピーダンスは複素数で表され、直列接続されたインピーダンスを伝達特性として掛け合わせるときに、複素数の積が登場します。IMPRODUCT関数を使えば、Excelシートに直接落とし込めますよ。</p>



<p>抵抗成分のZ1=10+5j、リアクタンス成分のZ2=2+8j を組み合わせるなら、こう書きます。</p>



<pre class="wp-block-code"><code>A2: =COMPLEX(10, 5, &quot;j&quot;)       ← Z1 = 10+5j
A3: =COMPLEX(2, 8, &quot;j&quot;)        ← Z2 = 2+8j
A4: =IMPRODUCT(A2, A3)         ← Z1 × Z2 = -20+90j
A5: =IMABS(A4)                 ← |Z1 × Z2|</code></pre>



<p>電気工学の慣習に合わせて虚数単位を「j」にしたい場合は、COMPLEX関数の第3引数で指定できますね。</p>



<h3 class="wp-block-heading"><span id="toc15">活用例3: 伝達関数の段接続</span></h3>



<p>制御工学では、複数の伝達関数 G1(s)、G2(s)、G3(s) を直列に接続したシステムの全体特性を、それぞれの値の積として計算します。特定の周波数 s=jω での値が複素数になるので、IMPRODUCT関数で一発に組み合わせられますよ。</p>



<p>ある周波数ωでの値がそれぞれ G1=1+2j、G2=0.5+0.5j、G3=2+1j のとき、こう書きます。</p>



<pre class="wp-block-code"><code>A2: =COMPLEX(1, 2, &quot;j&quot;)            ← G1
A3: =COMPLEX(0.5, 0.5, &quot;j&quot;)        ← G2
A4: =COMPLEX(2, 1, &quot;j&quot;)            ← G3
A5: =IMPRODUCT(A2, A3, A4)         ← G1 × G2 × G3
A6: =IMABS(A5)                     ← ゲイン
A7: =IMARGUMENT(A5)                ← 位相</code></pre>



<p>A5の結果がシステム全体の応答ですね。ゲインと位相を一緒に出しておけば、ボード線図の作成にもそのまま使えますよ。</p>



<h3 class="wp-block-heading"><span id="toc16">活用例4: 信号処理のフィルタ係数の合成</span></h3>



<p>複数のフィルタを直列につないだときの特性は、各フィルタの周波数応答の積で表されます。離散時間系では z=e^(jω) を代入して計算するので、IMPRODUCT関数とCOMPLEX関数の組み合わせが活きてきますね。</p>



<p>ある周波数ωで、フィルタ1の応答が「0.8+0.3j」、フィルタ2の応答が「1.2-0.4j」のとき、こう書きます。</p>



<pre class="wp-block-code"><code>A2: =COMPLEX(0.8, 0.3, &quot;j&quot;)        ← H1(e^jω)
A3: =COMPLEX(1.2, -0.4, &quot;j&quot;)       ← H2(e^jω)
A4: =IMPRODUCT(A2, A3)             ← H1 × H2 = 1.08+0.04j</code></pre>



<p>A4が合成後の周波数応答ですね。学習用のシミュレーションシートとして使えるパターンです。</p>



<h3 class="wp-block-heading"><span id="toc17">活用例5: 累積積をリスト化する</span></h3>



<p>時間ステップごとに複素数の係数を順次掛け合わせていく計算では、累積積を1列に展開すると便利です。直前のセルとの積を取る形で、漸化式のように書けますよ。</p>



<p>A列に係数、B列に累積積を出すなら、こう書きます。</p>



<pre class="wp-block-code"><code>A2: 1+0i
A3: 0.9+0.1i
A4: 0.8+0.2i
A5: 0.7+0.3i

B2: =A2                       ← 初期値
B3: =IMPRODUCT(B2, A3)        ← 累積積
B4: =IMPRODUCT(B3, A4)
B5: =IMPRODUCT(B4, A5)</code></pre>



<p>下にコピーすれば、累積積の列が完成しますね。物理シミュレーションや確率計算のチェイン処理で重宝するパターンですよ。</p>



<h2 class="wp-block-heading"><span id="toc18">IMPRODUCT関数とCOMPLEX関数群の関係</span></h2>



<p>複素数を扱う関数群の中で、IMPRODUCT関数の位置づけを整理しておきましょう。</p>



<figure class="wp-block-table"><table><thead><tr><th>関数</th><th>入力</th><th>出力</th><th>役割</th></tr></thead><tbody><tr><td><a href="https://mashukabu.com/spreadsheet-complex-function/">COMPLEX</a></td><td>実数 a, b</td><td>複素数 a+bi</td><td>複素数を作る</td></tr><tr><td><a href="https://mashukabu.com/spreadsheet-imreal-function/">IMREAL</a></td><td>複素数 a+bi</td><td>実数 a</td><td>実部を取り出す</td></tr><tr><td><a href="https://mashukabu.com/spreadsheet-imaginary-function/">IMAGINARY</a></td><td>複素数 a+bi</td><td>実数 b</td><td>虚部を取り出す</td></tr><tr><td><a href="https://mashukabu.com/spreadsheet-imabs-function/">IMABS</a></td><td>複素数 a+bi</td><td>実数 √(a²+b²)</td><td>大きさを取り出す</td></tr><tr><td><a href="https://mashukabu.com/spreadsheet-imargument-function/">IMARGUMENT</a></td><td>複素数 a+bi</td><td>実数 atan2(b,a)</td><td>偏角を取り出す</td></tr><tr><td>IMSUM</td><td>複素数 z1, z2, &#8230;</td><td>複素数 z1+z2+&#8230;</td><td>和を計算する</td></tr><tr><td>IMSUB</td><td>複素数 z1, z2</td><td>複素数 z1-z2</td><td>差を計算する</td></tr><tr><td>IMPRODUCT</td><td>複素数 z1, z2, &#8230;</td><td>複素数 z1×z2×&#8230;</td><td>積を計算する</td></tr><tr><td>IMDIV</td><td>複素数 z1, z2</td><td>複素数 z1/z2</td><td>商を計算する</td></tr><tr><td><a href="https://mashukabu.com/spreadsheet-impower-function/">IMPOWER</a></td><td>複素数 z, 指数 n</td><td>複素数 z^n</td><td>べき乗を計算する</td></tr></tbody></table></figure>



<p>IMPRODUCTは「複数の複素数から1つの複素数を計算する」役割です。出力もそのまま複素数なので、IMSUMやIMPOWERにそのまま渡してさらに計算を続けられますよ。</p>



<p>たとえば同じ複素数を3回掛けたい場合、IMPOWERの方が読みやすくなります。</p>



<pre class="wp-block-code"><code>=IMPRODUCT(&quot;2+3i&quot;, &quot;2+3i&quot;, &quot;2+3i&quot;)
=IMPOWER(&quot;2+3i&quot;, 3)</code></pre>



<p>どちらも結果は「-46+9i」で同じですね。ただし異なる複素数を順次掛けたいなら、IMPRODUCTの出番です。役割で使い分けるとシートが読みやすくなりますよ。</p>



<p>割り算がしたい場合は、IMDIV関数を使うと意図が明確になります。「IMPRODUCT(z1, IMPOWER(z2, -1))」とも書けますが、IMDIV(z1, z2) の方がストレートですね。</p>



<h2 class="wp-block-heading"><span id="toc19">IMPRODUCT関数のよくあるエラーと対処法</span></h2>



<h3 class="wp-block-heading"><span id="toc20">#NUM! エラー（複素数の形式エラー）</span></h3>



<p>複素数として認識できない文字列を渡したときに発生します。虚数単位が大文字になっていたり、i・j以外の文字を使っている場合が典型例ですよ。</p>



<pre class="wp-block-code"><code>=IMPRODUCT(&quot;1+1I&quot;, &quot;1+1i&quot;)   → #NUM!（大文字のIは不可）
=IMPRODUCT(&quot;1+1k&quot;, &quot;1+1i&quot;)   → #NUM!（i・j以外は不可）
=IMPRODUCT(&quot;１+１i&quot;, &quot;1+1i&quot;) → #NUM!（全角文字は不可）</code></pre>



<p>対処法は、複素数文字列を必ず半角の「a+bi」または「a+bj」の形式にすることです。虚数単位は小文字限定なので、CapsLockがオンになっていないか確認してくださいね。</p>



<p>スペースが入っている場合（例: <code>"1 + 1i"</code>）も認識できないことがあるので、余計な空白を除いておくと安心です。</p>



<h3 class="wp-block-heading"><span id="toc21">#VALUE! エラー（虚数単位の混在）</span></h3>



<p>引数に「i」と「j」が混ざっていると #VALUE! エラーになります。</p>



<pre class="wp-block-code"><code>=IMPRODUCT(&quot;1+1i&quot;, &quot;1+1j&quot;)   → #VALUE!（iとjの混在は不可）</code></pre>



<p>対処法は、虚数単位をすべて「i」かすべて「j」のどちらかに統一することです。シート全体でルールを決めておくと、こうしたミスを防げますよ。COMPLEX関数で複素数を作るときは、第3引数で単位を統一できるので便利ですね。</p>



<h3 class="wp-block-heading"><span id="toc22">#VALUE! エラー（引数の型エラー）</span></h3>



<p>論理値やエラー値を渡したときにも #VALUE! エラーが発生します。</p>



<pre class="wp-block-code"><code>=IMPRODUCT(&quot;1+1i&quot;, TRUE)   → #VALUE!（論理値は不可）
=IMPRODUCT(&quot;1+1i&quot;, #N/A)   → #N/A（エラー値はそのまま伝播）</code></pre>



<p>対処法は、すべての引数を複素数文字列か数値で統一することです。実数を渡すと「a+0i」として扱われるので、数値そのものは問題なく受け付けてくれますよ。</p>



<h3 class="wp-block-heading"><span id="toc23">結果が極端な値になる</span></h3>



<p>たくさんの複素数を掛け合わせると、絶対値が指数的に増えてオーバーフローしたり、数値誤差が積み上がったりします。</p>



<pre class="wp-block-code"><code>=IMPRODUCT(A2:A100)   → 100個の積で誤差が膨らむケース</code></pre>



<p>対処法は、必要に応じて対数領域で計算する、あるいは中間結果を正規化することです。フィルタの直列接続なら各段でゲインを揃える、伝達関数の解析なら局所的にスケーリングする、といった工夫が必要ですね。</p>



<h3 class="wp-block-heading"><span id="toc24">IFERRORでまとめてエラーを吸収する</span></h3>



<p>入力データの信頼性が低い場合は、IFERROR関数（エラー時に代替値を返す関数）で包んでおくとシート全体の集計が止まりません。</p>



<pre class="wp-block-code"><code>=IFERROR(IMPRODUCT(A2, B2), &quot;形式エラー&quot;)</code></pre>



<p>エラー時にメッセージを返すようにしておけば、安心して大量データに適用できますよ。</p>



<h2 class="wp-block-heading"><span id="toc25">IMPRODUCT関数とExcelの互換性</span></h2>



<p>GoogleスプレッドシートのIMPRODUCT関数は、ExcelのIMPRODUCT関数と仕様が完全に一致しています。構文・引数・戻り値の形式・エラー条件まで同じですよ。</p>



<p>ExcelファイルをGoogleスプレッドシートで開いてもIMPRODUCT関数はそのまま動作します。逆にスプレッドシートで作った数式をExcelで開いても問題ありませんね。</p>



<p>ExcelのIMPRODUCT関数は、Excel 2007以降のすべてのバージョンで利用できます。Microsoft 365、Excel for Mac、Excel Online でも同じように使えますよ。古い環境とファイルを共有する場合でも、安心して使える関数ですね。</p>



<h2 class="wp-block-heading"><span id="toc26">複素数関連の関数一覧</span></h2>



<p>IMPRODUCT関数と一緒に使うことが多い、複素数関連の関数をまとめました。</p>



<figure class="wp-block-table"><table><thead><tr><th>関数名</th><th>機能</th></tr></thead><tbody><tr><td><a href="https://mashukabu.com/spreadsheet-complex-function/">COMPLEX</a></td><td>実数と虚数から複素数を作成する</td></tr><tr><td><a href="https://mashukabu.com/spreadsheet-imreal-function/">IMREAL</a></td><td>複素数の実数係数を返す</td></tr><tr><td><a href="https://mashukabu.com/spreadsheet-imaginary-function/">IMAGINARY</a></td><td>複素数の虚数係数を返す</td></tr><tr><td><a href="https://mashukabu.com/spreadsheet-imabs-function/">IMABS</a></td><td>複素数の絶対値（大きさ）を返す</td></tr><tr><td><a href="https://mashukabu.com/spreadsheet-imargument-function/">IMARGUMENT</a></td><td>複素数の偏角（角度）をラジアンで返す</td></tr><tr><td><a href="https://mashukabu.com/spreadsheet-imconjugate-function/">IMCONJUGATE</a></td><td>共役複素数を返す</td></tr><tr><td><a href="https://mashukabu.com/spreadsheet-impower-function/">IMPOWER</a></td><td>複素数のべき乗を返す</td></tr><tr><td>IMSQRT</td><td>複素数の平方根を返す</td></tr><tr><td>IMSUM</td><td>複素数の合計（足し算）を返す</td></tr><tr><td>IMSUB</td><td>複素数の差（引き算）を返す</td></tr><tr><td>IMPRODUCT</td><td>複素数の積（掛け算）を返す</td></tr><tr><td>IMDIV</td><td>複素数の商（割り算）を返す</td></tr><tr><td>IMEXP</td><td>複素数の指数関数を返す</td></tr><tr><td>IMLN</td><td>複素数の自然対数を返す</td></tr><tr><td><a href="https://mashukabu.com/spreadsheet-imcos-function/">IMCOS</a></td><td>複素数のコサインを返す</td></tr><tr><td>IMSIN</td><td>複素数のサインを返す</td></tr></tbody></table></figure>



<p>IMPRODUCT関数は、これら複素数関数群の中で「積を計算する」役割を担います。COMPLEXで作り、IMPRODUCTで積を取り、IMABS・IMARGUMENTで絶対値と偏角を確認するのが基本パターンですね。</p>



<h2 class="wp-block-heading"><span id="toc27">まとめ</span></h2>



<p>GoogleスプレッドシートのIMPRODUCT関数は、複素数同士の積を返す関数です。電気工学のインピーダンス合成、信号処理のフィルタ連結、制御工学の伝達関数の段接続など、複素数の掛け算が必要な場面で欠かせない関数ですよ。</p>



<ul class="wp-block-list"><li>構文は <code>=IMPRODUCT(複素数1, [複素数2, ...])</code> で最低1つ、最大255個まで指定可能</li><li>「a+bi」と「c+di」を渡すと、(a+bi)×(c+di) の結果が返る</li><li>「a+bj」のような工学系表記もそのまま受け付ける</li><li>共役複素数同士の積で、絶対値の2乗を実数として求められる</li><li>3つ以上の複素数も一気に掛け合わせられる</li><li>COMPLEX関数の結果やセル参照、複素数演算の結果から積を計算できる</li><li>IMABS・IMARGUMENTと組み合わせて結果を検算できる</li><li>同じ複素数の繰り返し掛け算ならIMPOWER、割り算ならIMDIVと使い分ける</li><li>ARRAYFORMULAで複数行を一括処理できる</li><li>REDUCEと組み合わせれば、可変長リストの総積も計算できる</li><li>大文字の「I」「J」や全角文字、i・j以外の単位は #NUM! エラー</li><li>「i」と「j」の混在は #VALUE! エラー</li><li>論理値や非数値を引数に渡すと #VALUE! エラー</li><li>ExcelのIMPRODUCT関数と完全互換（Excel 2007以降）</li></ul>



<p>複素数の積が必要になったら、IMPRODUCT関数の出番ですよ。COMPLEX関数で複素数を作り、IMPRODUCTで積を取り、IMABS・IMARGUMENTで絶対値と偏角を検算する流れで、エンジニアリング系のシートを軽快に組み立ててみてくださいね。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://mashukabu.com/spreadsheet-improduct-function/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>スプレッドシートのIMSEC関数の使い方｜複素数の正割（セカント）を一発で計算</title>
		<link>https://mashukabu.com/spreadsheet-imsec-function/</link>
					<comments>https://mashukabu.com/spreadsheet-imsec-function/#respond</comments>
		
		<dc:creator><![CDATA[まっしゅ]]></dc:creator>
		<pubDate>Wed, 29 Apr 2026 11:24:28 +0000</pubDate>
				<category><![CDATA[Googleスプレッドシート]]></category>
		<category><![CDATA[IMSEC]]></category>
		<category><![CDATA[エンジニアリング関数]]></category>
		<category><![CDATA[スプレッドシート]]></category>
		<category><![CDATA[正割]]></category>
		<category><![CDATA[複素数]]></category>
		<guid isPermaLink="false">https://mashukabu.com/?p=6348</guid>

					<description><![CDATA[GoogleスプレッドシートのIMSEC関数の使い方を解説。複素数（a+bi）の正割（セカント）を一発で求める基本構文、虚数単位i/jの扱い、COMPLEX関数やIMCOSとの連携、極が近いときの数値挙動、信号処理・電気工学・複素解析の学習での実務活用例、よくあるエラー対処法まで実例付きで紹介します。]]></description>
										<content:encoded><![CDATA[
<p>「スプレッドシートで複素数のセカント（正割）を計算したいけど、cos(a+bi) を展開してから逆数を取るのは面倒&#8230;」</p>



<p>スプレッドシートで複素関数を扱っていると、cos(z) の逆数である正割 sec(z) が必要になる場面がありますよね。複素数のコサインを実部と虚部に分解し、最後に逆数を取って再び複素数の形に戻す&#8230;という流れを毎回手作業でやるのはちょっと大変です。</p>



<p>そんなときに頼りになるのがGoogleスプレッドシートのIMSEC関数です。複素数を渡すだけでセカント（1/cos）を一発で返してくれるので、複素三角関数を使った数式が一気にすっきりしますよ。</p>



<p>ExcelのIMSEC関数と完全互換なので、Excelファイルとやり取りする現場でも安心ですね。COMPLEX関数で作った複素数や、IMSUM・IMPRODUCTの演算結果からも、そのままセカントを計算できます。</p>



<p>この記事では、スプレッドシートのIMSEC関数の基本構文と実務での活用例を解説します。IMCOS関数との関係や、極（cos(z)=0）に近いときの数値挙動、よくあるエラーと対処法もしっかり紹介していきますよ。</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-4" checked><label class="toc-title" for="toc-checkbox-4">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">スプレッドシートのIMSEC関数とは？</a></li><li><a href="#toc2" tabindex="0">IMSEC関数の書き方（構文と引数）</a><ol><li><a href="#toc3" tabindex="0">基本構文</a></li><li><a href="#toc4" tabindex="0">引数の詳細</a></li></ol></li><li><a href="#toc5" tabindex="0">スプレッドシートのIMSEC関数の基本的な使い方</a><ol><li><a href="#toc6" tabindex="0">文字列で複素数を直接指定する</a></li><li><a href="#toc7" tabindex="0">セル参照で複素数を指定する</a></li><li><a href="#toc8" tabindex="0">COMPLEX関数と組み合わせる</a></li><li><a href="#toc9" tabindex="0">IMCOS関数の逆数として書き換える</a></li><li><a href="#toc10" tabindex="0">度数からの変換と組み合わせる</a></li><li><a href="#toc11" tabindex="0">ARRAYFORMULAで複数行を一括処理する</a></li></ol></li><li><a href="#toc12" tabindex="0">IMSEC関数の実務活用例</a><ol><li><a href="#toc13" tabindex="0">活用例1: IMCOSとの関係を検算する</a></li><li><a href="#toc14" tabindex="0">活用例2: 複素三角関数テーブルを作る</a></li><li><a href="#toc15" tabindex="0">活用例3: 信号処理のフィルタ伝達関数で使う</a></li><li><a href="#toc16" tabindex="0">活用例4: 複素関数の値を可視化するシートを作る</a></li><li><a href="#toc17" tabindex="0">活用例5: 数値が大きくなる「極」の検出</a></li></ol></li><li><a href="#toc18" tabindex="0">IMSEC関数とCOMPLEX関数群の関係</a></li><li><a href="#toc19" tabindex="0">IMSEC関数のよくあるエラーと対処法</a><ol><li><a href="#toc20" tabindex="0">#NUM! エラー（複素数の形式エラー）</a></li><li><a href="#toc21" tabindex="0">#VALUE! エラー（引数の型エラー）</a></li><li><a href="#toc22" tabindex="0">結果が極端な値になる（極の近傍）</a></li><li><a href="#toc23" tabindex="0">結果の符号が想定と違う</a></li><li><a href="#toc24" tabindex="0">IFERRORでまとめてエラーを吸収する</a></li></ol></li><li><a href="#toc25" tabindex="0">IMSEC関数とExcelの互換性</a></li><li><a href="#toc26" tabindex="0">複素数関連の関数一覧</a></li><li><a href="#toc27" tabindex="0">まとめ</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">スプレッドシートのIMSEC関数とは？</span></h2>



<p>GoogleスプレッドシートのIMSEC関数（イマジナリー・セカント関数）は、複素数の正割（セカント）を返す関数です。エンジニアリング関数（電気・物理・工学系の計算で使う関数群）のひとつに分類されますよ。</p>



<p>読み方は「イマジナリー・セカント」または「アイエム・セック」で、英語の「imaginary number（虚数）」の「secant（正割）」に由来します。複素数「a+bi」に対して、sec(a+bi) = 1/cos(a+bi) を返してくれるのが役割ですね。</p>



<p>そもそも複素数の正割とは、実数の正割（sec(x) = 1/cos(x)）を複素数全体に拡張したものです。実部と虚部に分解した定義式は次のようになります。</p>



<pre class="wp-block-code"><code>cos(a+bi) = cos(a)cosh(b) − i sin(a)sinh(b)
sec(a+bi) = 1 / cos(a+bi)</code></pre>



<p>cos(a+bi) を求めてから逆数を取るというシンプルな構造ですね。実部だけの複素数（虚部0）を渡すと、通常の sec(a) と同じ結果になりますよ。</p>



<figure class="wp-block-table"><table><thead><tr><th>複素数（z）</th><th>IMSEC(z)の結果（概算）</th><th>備考</th></tr></thead><tbody><tr><td>0+0i</td><td>1</td><td>sec(0) = 1/cos(0) = 1</td></tr><tr><td>1+0i</td><td>約 1.8508</td><td>sec(1ラジアン) ≈ 1.8508</td></tr><tr><td>1+1i</td><td>約 0.4983+0.5910i</td><td>cos(1+i)の逆数</td></tr><tr><td>0+1i</td><td>約 0.6481</td><td>sech(1) と同値</td></tr><tr><td>2+3i</td><td>約 -0.0416+0.0906i</td><td>cos(2+3i) の逆数</td></tr></tbody></table></figure>



<p>IMSEC関数を使えば、この表の右側にある「複素数のセカント」をサクッと取り出せます。Excelとの互換性も完璧で、Excel 2013以降のすべてのバージョンに対応していますよ。</p>



<p>複素数の正割は、信号処理のフィルタ伝達関数・電気工学の交流回路解析・複素解析の学習教材・特殊関数の評価など、複素三角関数が必要な場面で活躍する基礎パーツですね。</p>



<h2 class="wp-block-heading"><span id="toc2">IMSEC関数の書き方（構文と引数）</span></h2>



<h3 class="wp-block-heading"><span id="toc3">基本構文</span></h3>



<pre class="wp-block-code"><code>=IMSEC(複素数)</code></pre>



<p>引数は1つだけで、必須です。</p>



<h3 class="wp-block-heading"><span id="toc4">引数の詳細</span></h3>



<figure class="wp-block-table"><table><thead><tr><th>引数</th><th>必須/任意</th><th>説明</th></tr></thead><tbody><tr><td>複素数（inumber）</td><td>必須</td><td>正割を求めたい複素数。文字列またはセル参照で指定する</td></tr></tbody></table></figure>



<p>引数には「&#8221;2+3i&#8221;」や「&#8221;2+3j&#8221;」のような複素数文字列を直接渡せます。COMPLEX関数（実数と虚数から複素数を作成する関数）の結果や、複素数が入ったセルの参照も指定できますよ。</p>



<p>虚数単位は小文字の「i」または「j」のどちらでも受け付けます。数学では「i」、電気工学では「j」が使われる慣習ですね。IMSEC関数はどちらでも同じように動作してくれます。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>TIP</strong></p><p>戻り値は元の入力と同じ虚数単位で返されます。「1+1i」を渡せば「i」付きで、「1+1j」を渡せば「j」付きで返るので、表記の統一性も保たれますよ。</p></blockquote>



<p>実部・虚部の単位はラジアンです。度数（°）で角度を持っている場合は、RADIANS関数で先にラジアンに変換しておきましょう。</p>



<h2 class="wp-block-heading"><span id="toc5">スプレッドシートのIMSEC関数の基本的な使い方</span></h2>



<h3 class="wp-block-heading"><span id="toc6">文字列で複素数を直接指定する</span></h3>



<p>複素数文字列をそのまま引数に渡してみましょう。</p>



<pre class="wp-block-code"><code>=IMSEC(&quot;1+1i&quot;)</code></pre>



<p>結果は「0.4983370305&#8230;+0.5910838417&#8230;i」になります。手計算で確認すると cos(1+i) = cos(1)cosh(1) − i sin(1)sinh(1) ≈ 0.8337 − 0.9889i で、その逆数を取ると約 0.4983 + 0.5910i なので、計算が合っていますね。</p>



<p>実部だけの複素数（虚部0）を渡すと、通常のセカントと同じ結果になります。</p>



<pre class="wp-block-code"><code>=IMSEC(&quot;1+0i&quot;)</code></pre>



<p>結果は約「1.8508」です。sec(1ラジアン) = 1/cos(1) ≈ 1/0.5403 ≈ 1.8508 という基本的な値が返ってきますね。</p>



<p>虚部だけの純虚数を渡すと、双曲線セカント（sech）と同じ値になります。</p>



<pre class="wp-block-code"><code>=IMSEC(&quot;0+1i&quot;)</code></pre>



<p>結果は約「0.6481」になります。sec(i) = 1/cos(i) = 1/cosh(1) = sech(1) ≈ 0.6481 なので、双曲線関数の世界とつながっているのが分かりますね。</p>



<h3 class="wp-block-heading"><span id="toc7">セル参照で複素数を指定する</span></h3>



<p>実務ではセルに入った複素数を扱う場面が多いですよね。A2に「2+3i」が入っている場合は次のように書きます。</p>



<pre class="wp-block-code"><code>=IMSEC(A2)</code></pre>



<p>結果は約「-0.0416+0.0906i」になります。セル参照を渡すだけで、入っている複素数のセカントを取り出せますよ。</p>



<h3 class="wp-block-heading"><span id="toc8">COMPLEX関数と組み合わせる</span></h3>



<p><a href="https://mashukabu.com/spreadsheet-complex-function/">COMPLEX関数</a>で作った複素数のセカントを、その場で計算することもできます。</p>



<pre class="wp-block-code"><code>=IMSEC(COMPLEX(1, 1))</code></pre>



<p>結果は約「0.4983+0.5910i」、つまり「IMSEC(&#8220;1+1i&#8221;)」と同じですね。COMPLEX(1, 1)が内部で「1+1i」を作り、IMSEC関数がそのセカントを返してくれます。</p>



<p>実部と虚部がセルに分かれているデータを扱うときに便利な書き方ですよ。</p>



<h3 class="wp-block-heading"><span id="toc9">IMCOS関数の逆数として書き換える</span></h3>



<p>IMSEC関数は定義上、IMDIV関数（複素数の割り算）とIMCOS関数（複素数のコサイン）を組み合わせても表現できます。</p>



<pre class="wp-block-code"><code>=IMSEC(&quot;1+1i&quot;)
=IMDIV(&quot;1&quot;, IMCOS(&quot;1+1i&quot;))</code></pre>



<p>どちらも結果は同じ約「0.4983+0.5910i」になりますね。IMSEC関数は内部で同じ計算をしてくれるので、わざわざIMDIVとIMCOSを書く必要はありません。読みやすさ・タイプ量・エラーの起きにくさのどれを取ってもIMSECの方が有利ですよ。</p>



<h3 class="wp-block-heading"><span id="toc10">度数からの変換と組み合わせる</span></h3>



<p>実部・虚部が度数（°）で与えられているときは、RADIANS関数でラジアンに直してから渡します。</p>



<pre class="wp-block-code"><code>=IMSEC(COMPLEX(RADIANS(60), RADIANS(30)))</code></pre>



<p>A列の度数を一気にラジアンに変換してから処理したい場合は、ARRAYFORMULA関数（数式を範囲全体に展開する関数）を併用すると便利ですね。</p>



<h3 class="wp-block-heading"><span id="toc11">ARRAYFORMULAで複数行を一括処理する</span></h3>



<p>複素数のリストから一気にセカントの列を作りたい場面もありますよね。そんなときはARRAYFORMULA関数と組み合わせます。</p>



<pre class="wp-block-code"><code>=ARRAYFORMULA(IMSEC(A2:A10))</code></pre>



<p>A列に並んだ複素数から、対応する正割の値をB列に一発で展開できますよ。複素三角関数のテーブルを作るときに重宝しますね。</p>



<h2 class="wp-block-heading"><span id="toc12">IMSEC関数の実務活用例</span></h2>



<h3 class="wp-block-heading"><span id="toc13">活用例1: IMCOSとの関係を検算する</span></h3>



<p>複素数のセカントは sec(z) = 1/cos(z) という定義そのままなので、IMCOS関数とIMDIV関数を使って検算できます。</p>



<p>A2に「1.5+0.7i」が入っているとします。</p>



<pre class="wp-block-code"><code>B2: =IMSEC(A2)                 ← セカントを直接計算
C2: =IMCOS(A2)                 ← コサインを計算
D2: =IMDIV(&quot;1&quot;, C2)            ← その逆数を取る
E2: =IMSUB(B2, D2)             ← B2とD2の差（≈ 0+0i のはず）</code></pre>



<p>E2が「ほぼ 0+0i」になっていれば、IMSEC関数が定義どおり動いている証拠ですね。シート上で自動チェックを仕込んでおくと、入力ミスにも気付きやすくなりますよ。</p>



<h3 class="wp-block-heading"><span id="toc14">活用例2: 複素三角関数テーブルを作る</span></h3>



<p>複素三角関数の挙動を学習するときは、IMSIN・IMCOS・IMSEC・IMCSC・IMTAN・IMCOTを並べた一覧表があると便利ですよね。</p>



<pre class="wp-block-code"><code>A2: 0.5+0.5i
B2: =IMSIN(A2)        ← サイン
C2: =IMCOS(A2)        ← コサイン
D2: =IMSEC(A2)        ← セカント
E2: =IMCSC(A2)        ← コセカント
F2: =IMTAN(A2)        ← タンジェント
G2: =IMCOT(A2)        ← コタンジェント</code></pre>



<p>A列に複素数を並べておけば、複素関数の値を一気に俯瞰できます。複素解析の学習教材として、教科書の例題を確認するのにぴったりですね。</p>



<h3 class="wp-block-heading"><span id="toc15">活用例3: 信号処理のフィルタ伝達関数で使う</span></h3>



<p>アナログフィルタの伝達関数 H(s) = 1/cos(s) のような形は、チェビシェフ多項式やバターワース近似の理論的な比較で登場します。s = σ + jω に IMSEC を適用すれば、シート上で値の挙動を確認できますよ。</p>



<pre class="wp-block-code"><code>A2: =COMPLEX(0.1, 1.0, &quot;j&quot;)     ← s = 0.1+1.0j
B2: =IMSEC(A2)                  ← H(s) = sec(s)
C2: =IMABS(B2)                  ← |H(s)|（ゲイン）
D2: =IMARGUMENT(B2)             ← arg H(s)（位相）</code></pre>



<p>電気工学の慣習に合わせて虚数単位を「j」にしたい場合は、COMPLEX関数の第3引数で指定できますね。教科書のボード線図と見比べる用途に向いています。</p>



<h3 class="wp-block-heading"><span id="toc16">活用例4: 複素関数の値を可視化するシートを作る</span></h3>



<p>複素関数の値を可視化したいときは、x = -π〜π を細かく刻み、それぞれに IMSEC を適用してから絶対値や実部・虚部を別列に取り出します。</p>



<pre class="wp-block-code"><code>A2: -3.14
A3: =A2+0.1                    ← 0.1刻みで増やす
B2: =IMSEC(COMPLEX(A2, 0.5))   ← 虚部固定でセカントを評価
C2: =IMREAL(B2)                ← 実部
D2: =IMAGINARY(B2)             ← 虚部
E2: =IMABS(B2)                 ← 絶対値</code></pre>



<p>C列〜E列をグラフ化すれば、IMSECの実部・虚部・絶対値の振る舞いが一目で分かりますね。複素三角関数の学習用シートとして再利用しやすい形です。</p>



<h3 class="wp-block-heading"><span id="toc17">活用例5: 数値が大きくなる「極」の検出</span></h3>



<p>cos(z) = 0 となる点（z = π/2, 3π/2, &#8230;）の近くでは、sec(z) は無限大に発散します。IMABS関数で絶対値を測れば、数値計算上の不安定領域を検出できますよ。</p>



<pre class="wp-block-code"><code>A2: 1.5708                      ← ≈ π/2
B2: =IMSEC(COMPLEX(A2, 0))      ← sec(π/2) は理論上∞
C2: =IMABS(B2)                  ← 巨大な値が出る
D2: =IF(C2&gt;1E10, &quot;極の近傍&quot;, &quot;OK&quot;)</code></pre>



<p>D列で警告を出しておくと、フィルタ設計やシミュレーションで「危険な周波数」をひと目で識別できますね。</p>



<h2 class="wp-block-heading"><span id="toc18">IMSEC関数とCOMPLEX関数群の関係</span></h2>



<p>複素数を扱う関数群の中で、IMSEC関数の位置づけを整理しておきましょう。</p>



<figure class="wp-block-table"><table><thead><tr><th>関数</th><th>入力</th><th>出力</th><th>役割</th></tr></thead><tbody><tr><td><a href="https://mashukabu.com/spreadsheet-complex-function/">COMPLEX</a></td><td>実数 a, b</td><td>複素数 a+bi</td><td>複素数を作る</td></tr><tr><td><a href="https://mashukabu.com/spreadsheet-imreal-function/">IMREAL</a></td><td>複素数 a+bi</td><td>実数 a</td><td>実部を取り出す</td></tr><tr><td><a href="https://mashukabu.com/spreadsheet-imaginary-function/">IMAGINARY</a></td><td>複素数 a+bi</td><td>実数 b</td><td>虚部を取り出す</td></tr><tr><td><a href="https://mashukabu.com/spreadsheet-imabs-function/">IMABS</a></td><td>複素数 a+bi</td><td>実数 √(a²+b²)</td><td>大きさを取り出す</td></tr><tr><td><a href="https://mashukabu.com/spreadsheet-imargument-function/">IMARGUMENT</a></td><td>複素数 a+bi</td><td>実数 atan2(b,a)</td><td>偏角を取り出す</td></tr><tr><td><a href="https://mashukabu.com/spreadsheet-imcos-function/">IMCOS</a></td><td>複素数 z</td><td>複素数 cos(z)</td><td>コサインを計算する</td></tr><tr><td>IMSIN</td><td>複素数 z</td><td>複素数 sin(z)</td><td>サインを計算する</td></tr><tr><td>IMSEC</td><td>複素数 z</td><td>複素数 1/cos(z)</td><td>セカントを計算する</td></tr><tr><td>IMCSC</td><td>複素数 z</td><td>複素数 1/sin(z)</td><td>コセカントを計算する</td></tr><tr><td>IMSECH</td><td>複素数 z</td><td>複素数 1/cosh(z)</td><td>双曲線セカントを計算する</td></tr></tbody></table></figure>



<p>IMSECは「複素数から複素数を計算する」役割です。出力もそのまま複素数なので、IMSUMやIMPRODUCTにそのまま渡してさらに計算を続けられますよ。</p>



<p>たとえば sec(z) = 1/cos(z) を IMDIV と IMCOS で代用すると、こう書けます。</p>



<pre class="wp-block-code"><code>=IMSEC(&quot;1+1i&quot;)
=IMDIV(&quot;1&quot;, IMCOS(&quot;1+1i&quot;))</code></pre>



<p>どちらも結果は約「0.4983+0.5910i」で同じですね。ただしIMSECの方が読みやすく、タイプ量も少ないので、特別な理由がなければIMSECを使う方が無難です。</p>



<p>双曲線版のセカント（1/cosh(z)）が必要な場合は、専用の<a href="https://mashukabu.com/spreadsheet-imsech-function/">IMSECH関数</a>を使うと意図が明確になりますよ。</p>



<h2 class="wp-block-heading"><span id="toc19">IMSEC関数のよくあるエラーと対処法</span></h2>



<h3 class="wp-block-heading"><span id="toc20">#NUM! エラー（複素数の形式エラー）</span></h3>



<p>複素数として認識できない文字列を渡したときに発生します。虚数単位が大文字になっていたり、i・j以外の文字を使っている場合が典型例ですよ。</p>



<pre class="wp-block-code"><code>=IMSEC(&quot;1+1I&quot;)    → #NUM!（大文字のIは不可）
=IMSEC(&quot;1+1k&quot;)    → #NUM!（i・j以外は不可）
=IMSEC(&quot;１+１i&quot;)  → #NUM!（全角文字は不可）</code></pre>



<p>対処法は、複素数文字列を必ず半角の「a+bi」または「a+bj」の形式にすることです。虚数単位は小文字限定なので、CapsLockがオンになっていないか確認してくださいね。</p>



<p>スペースが入っている場合（例: <code>"1 + 1i"</code>）も認識できないことがあるので、余計な空白を除いておくと安心です。</p>



<h3 class="wp-block-heading"><span id="toc21">#VALUE! エラー（引数の型エラー）</span></h3>



<p>引数に論理値や、複素数として解釈できない値を渡したときに発生します。</p>



<pre class="wp-block-code"><code>=IMSEC(TRUE)   → #VALUE!（論理値は不可）
=IMSEC(#N/A)   → #N/A（エラー値はそのまま伝播）</code></pre>



<p>対処法は、引数を必ず複素数文字列または数値、もしくは複素数を返す関数の結果として渡すことです。他システムからコピーした値はテキスト扱いになっていることがあるので、<code>=ISTEXT(A2)</code> や <code>=ISNUMBER(A2)</code> でチェックしておくと安心ですよ。</p>



<h3 class="wp-block-heading"><span id="toc22">結果が極端な値になる（極の近傍）</span></h3>



<p>cos(z) = 0 となる点（z = π/2 + nπ）の近くでは、sec(z) の絶対値が爆発的に大きくなります。</p>



<pre class="wp-block-code"><code>=IMSEC(&quot;1.5707963267948+0i&quot;)   → 約 1.6×10^16（理論値は∞）</code></pre>



<p>対処法は、入力値が極の近くにないか事前にチェックすることです。<code>=IF(IMABS(IMCOS(A2))<1E-10, "極の近傍", IMSEC(A2))</code> のように、cos の絶対値が小さすぎるときは別処理に分岐させると安全ですね。</p>



<h3 class="wp-block-heading"><span id="toc23">結果の符号が想定と違う</span></h3>



<p>複素数の正割は周期 2π と複素平面の対称性が組み合わさるため、入力の選び方によっては結果の符号が想定と違って見えることがあります。「なぜマイナスになるのか」と迷ったら、IMCOS関数で先にコサインを確認してみましょう。</p>



<pre class="wp-block-code"><code>=IMCOS(&quot;2+3i&quot;)          ← 元のコサインを確認
=IMSEC(&quot;2+3i&quot;)          ← セカント（IMCOSの逆数）</code></pre>



<p>cos(z) の実部・虚部の符号と、セカントの符号が「逆数の関係」になっているかをチェックすると原因が見えてきますよ。</p>



<h3 class="wp-block-heading"><span id="toc24">IFERRORでまとめてエラーを吸収する</span></h3>



<p>入力データの信頼性が低い場合は、IFERROR関数（エラー時に代替値を返す関数）で包んでおくとシート全体の集計が止まりません。</p>



<pre class="wp-block-code"><code>=IFERROR(IMSEC(A2), &quot;形式エラー&quot;)</code></pre>



<p>エラー時にメッセージを返すようにしておけば、安心して大量データに適用できますよ。</p>



<h2 class="wp-block-heading"><span id="toc25">IMSEC関数とExcelの互換性</span></h2>



<p>GoogleスプレッドシートのIMSEC関数は、ExcelのIMSEC関数と仕様が完全に一致しています。構文・引数・戻り値の形式・エラー条件まで同じですよ。</p>



<p>ExcelファイルをGoogleスプレッドシートで開いてもIMSEC関数はそのまま動作します。逆にスプレッドシートで作った数式をExcelで開いても問題ありませんね。</p>



<p>ExcelのIMSEC関数は、Excel 2013以降のすべてのバージョンで利用できます。Microsoft 365、Excel for Mac、Excel Online でも同じように使えますよ。Excel 2010以前のバージョンとファイルを共有する予定がある場合は、IMDIV・IMCOSの組み合わせで代替する必要があるので、お使いのバージョンが対応しているか確認しておきましょう。</p>



<h2 class="wp-block-heading"><span id="toc26">複素数関連の関数一覧</span></h2>



<p>IMSEC関数と一緒に使うことが多い、複素数関連の関数をまとめました。</p>



<figure class="wp-block-table"><table><thead><tr><th>関数名</th><th>機能</th></tr></thead><tbody><tr><td><a href="https://mashukabu.com/spreadsheet-complex-function/">COMPLEX</a></td><td>実数と虚数から複素数を作成する</td></tr><tr><td><a href="https://mashukabu.com/spreadsheet-imreal-function/">IMREAL</a></td><td>複素数の実数係数を返す</td></tr><tr><td><a href="https://mashukabu.com/spreadsheet-imaginary-function/">IMAGINARY</a></td><td>複素数の虚数係数を返す</td></tr><tr><td><a href="https://mashukabu.com/spreadsheet-imabs-function/">IMABS</a></td><td>複素数の絶対値（大きさ）を返す</td></tr><tr><td><a href="https://mashukabu.com/spreadsheet-imargument-function/">IMARGUMENT</a></td><td>複素数の偏角（角度）をラジアンで返す</td></tr><tr><td><a href="https://mashukabu.com/spreadsheet-imconjugate-function/">IMCONJUGATE</a></td><td>共役複素数を返す</td></tr><tr><td>IMSUM</td><td>複素数の合計（足し算）を返す</td></tr><tr><td>IMSUB</td><td>複素数の差（引き算）を返す</td></tr><tr><td>IMPRODUCT</td><td>複素数の積（掛け算）を返す</td></tr><tr><td>IMDIV</td><td>複素数の商（割り算）を返す</td></tr><tr><td><a href="https://mashukabu.com/spreadsheet-impower-function/">IMPOWER</a></td><td>複素数のべき乗を返す</td></tr><tr><td>IMSQRT</td><td>複素数の平方根を返す</td></tr><tr><td>IMEXP</td><td>複素数の指数関数を返す</td></tr><tr><td>IMLN</td><td>複素数の自然対数を返す</td></tr><tr><td><a href="https://mashukabu.com/spreadsheet-imcos-function/">IMCOS</a></td><td>複素数のコサインを返す</td></tr><tr><td>IMSIN</td><td>複素数のサインを返す</td></tr><tr><td>IMSEC</td><td>複素数のセカント（正割）を返す</td></tr><tr><td>IMCSC</td><td>複素数のコセカント（余割）を返す</td></tr><tr><td><a href="https://mashukabu.com/spreadsheet-imsech-function/">IMSECH</a></td><td>複素数の双曲線セカントを返す</td></tr></tbody></table></figure>



<p>IMSEC関数は、これら複素数関数群の中で「セカント（正割）を計算する」役割を担います。COMPLEXで作り、IMSECでセカントを取り、IMABS・IMARGUMENTで絶対値と偏角を確認するのが基本パターンですね。</p>



<h2 class="wp-block-heading"><span id="toc27">まとめ</span></h2>



<p>GoogleスプレッドシートのIMSEC関数は、複素数の正割（1/cos(z)）を返す関数です。信号処理のフィルタ伝達関数、電気工学の交流回路解析、複素解析の学習教材、特殊関数の評価など、複素三角関数が必要な場面で欠かせない関数ですよ。</p>



<ul class="wp-block-list"><li>構文は <code>=IMSEC(複素数)</code> で引数は1つだけ必須</li><li>「a+bi」を渡すと sec(a+bi) = 1/cos(a+bi) が返る</li><li>「a+bj」のような工学系表記もそのまま受け付ける</li><li>実部・虚部の単位はラジアン（度数の場合はRADIANS関数で変換）</li><li>内部的には cos(a+bi) = cos(a)cosh(b) − i sin(a)sinh(b) の逆数</li><li>COMPLEX関数の結果やセル参照、複素数演算の結果からセカントを計算できる</li><li>IMCOSとIMDIVの組み合わせと結果は同じだが、IMSECの方が読みやすい</li><li>純虚数 0+bi の場合は双曲線セカント sech(b) と同値</li><li>極（cos(z)=0）の近くでは絶対値が爆発するので、事前にIMCOSでチェック</li><li>ARRAYFORMULAで複数の複素数を一括処理できる</li><li>大文字の「I」「J」や全角文字、i・j以外の単位は #NUM! エラー</li><li>引数に論理値を渡すと #VALUE! エラー</li><li>ExcelのIMSEC関数と完全互換（Excel 2013以降）</li></ul>



<p>複素数の正割が必要になったら、IMSEC関数の出番ですよ。COMPLEX関数で複素数を作り、IMSECでセカントを取り、IMABS・IMARGUMENT・IMCOSで結果を検算する流れで、エンジニアリング系のシートを軽快に組み立ててみてくださいね。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://mashukabu.com/spreadsheet-imsec-function/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>スプレッドシートのIMSECH関数の使い方｜複素数の双曲線正割（ハイパーボリックセカント）を一発で計算</title>
		<link>https://mashukabu.com/spreadsheet-imsech-function/</link>
					<comments>https://mashukabu.com/spreadsheet-imsech-function/#respond</comments>
		
		<dc:creator><![CDATA[まっしゅ]]></dc:creator>
		<pubDate>Wed, 29 Apr 2026 11:24:26 +0000</pubDate>
				<category><![CDATA[Googleスプレッドシート]]></category>
		<category><![CDATA[IMSECH]]></category>
		<category><![CDATA[エンジニアリング関数]]></category>
		<category><![CDATA[スプレッドシート]]></category>
		<category><![CDATA[双曲線正割]]></category>
		<category><![CDATA[複素数]]></category>
		<guid isPermaLink="false">https://mashukabu.com/?p=6346</guid>

					<description><![CDATA[GoogleスプレッドシートのIMSECH関数の使い方を解説。複素数（a+bi）の双曲線正割（ハイパーボリックセカント）sech(z)=1/cosh(z) を一発で求める基本構文、虚数単位i/jの扱い、COMPLEX関数やIMCOSHとの連携、純虚数では sec(b) と同値になる関係、信号処理・電気工学・複素解析での活用例、よくあるエラー対処法まで実例付きで紹介します。]]></description>
										<content:encoded><![CDATA[
<p>「スプレッドシートで複素数の双曲線セカント（sech）を計算したいけど、cosh(a+bi) を実部と虚部に展開してから逆数を取るのは大変&#8230;」</p>



<p>スプレッドシートで複素関数を扱っていると、cosh(z) の逆数である双曲線正割 sech(z) が必要になる場面がありますよね。複素数の双曲線コサインを実部と虚部に分解する作業を毎回やるのは面倒です。最後に逆数を取って再び複素数の形に戻す手順も、手作業ではちょっと大変ですよね。</p>



<p>そんなときに頼りになるのがGoogleスプレッドシートのIMSECH関数です。複素数を渡すだけで sech（1/cosh）を一発で返してくれるので、複素双曲線関数を使った数式が一気にすっきりしますよ。</p>



<p>ExcelのIMSECH関数と完全互換なので、Excelファイルとやり取りする現場でも安心ですね。COMPLEX関数で作った複素数や、IMSUM・IMPRODUCTの演算結果からも、そのまま双曲線セカントを計算できます。</p>



<p>この記事では、スプレッドシートのIMSECH関数の基本構文と実務での活用例を解説します。IMCOSH関数との関係や、純虚数を渡すと通常のセカント sec(b) と同値になる対応関係も整理しますよ。よくあるエラーと対処法もしっかり紹介していきますね。</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-5" checked><label class="toc-title" for="toc-checkbox-5">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">スプレッドシートのIMSECH関数とは？</a></li><li><a href="#toc2" tabindex="0">IMSECH関数の書き方（構文と引数）</a><ol><li><a href="#toc3" tabindex="0">基本構文</a></li><li><a href="#toc4" tabindex="0">引数の詳細</a></li></ol></li><li><a href="#toc5" tabindex="0">スプレッドシートのIMSECH関数の基本的な使い方</a><ol><li><a href="#toc6" tabindex="0">文字列で複素数を直接指定する</a></li><li><a href="#toc7" tabindex="0">セル参照で複素数を指定する</a></li><li><a href="#toc8" tabindex="0">COMPLEX関数と組み合わせる</a></li><li><a href="#toc9" tabindex="0">IMCOSH関数の逆数として書き換える</a></li><li><a href="#toc10" tabindex="0">度数からの変換と組み合わせる</a></li><li><a href="#toc11" tabindex="0">ARRAYFORMULAで複数行を一括処理する</a></li></ol></li><li><a href="#toc12" tabindex="0">IMSECH関数の実務活用例</a><ol><li><a href="#toc13" tabindex="0">活用例1: IMCOSHとの関係を検算する</a></li><li><a href="#toc14" tabindex="0">活用例2: 複素双曲線関数テーブルを作る</a></li><li><a href="#toc15" tabindex="0">活用例3: 伝送線路の特性で使う</a></li><li><a href="#toc16" tabindex="0">活用例4: 複素関数の値を可視化するシートを作る</a></li><li><a href="#toc17" tabindex="0">活用例5: 数値が大きくなる「極」の検出</a></li></ol></li><li><a href="#toc18" tabindex="0">IMSECH関数とCOMPLEX関数群の関係</a></li><li><a href="#toc19" tabindex="0">IMSECH関数のよくあるエラーと対処法</a><ol><li><a href="#toc20" tabindex="0">#NUM! エラー（複素数の形式エラー）</a></li><li><a href="#toc21" tabindex="0">#VALUE! エラー（引数の型エラー）</a></li><li><a href="#toc22" tabindex="0">結果が極端な値になる（極の近傍）</a></li><li><a href="#toc23" tabindex="0">結果の符号が想定と違う</a></li><li><a href="#toc24" tabindex="0">IFERRORでまとめてエラーを吸収する</a></li></ol></li><li><a href="#toc25" tabindex="0">IMSECH関数とExcelの互換性</a></li><li><a href="#toc26" tabindex="0">複素数関連の関数一覧</a></li><li><a href="#toc27" tabindex="0">まとめ</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">スプレッドシートのIMSECH関数とは？</span></h2>



<p>GoogleスプレッドシートのIMSECH関数（イマジナリー・セカント・ハイパボリック関数）は、複素数の双曲線正割（ハイパーボリックセカント）を返す関数です。エンジニアリング関数（電気・物理・工学系の計算で使う関数群）のひとつに分類されますよ。</p>



<p>読み方は「イマジナリー・セカント・ハイパボリック」または「アイエム・セック・エイチ」で、英語の「imaginary number（虚数）」の「secant hyperbolic（双曲線正割）」に由来します。複素数「a+bi」に対して、sech(a+bi) = 1/cosh(a+bi) を返してくれるのが役割ですね。</p>



<p>そもそも複素数の双曲線正割とは、実数の sech（sech(x) = 1/cosh(x)）を複素数全体に拡張したものです。実部と虚部に分解した定義式は次のようになります。</p>



<pre class="wp-block-code"><code>cosh(a+bi) = cosh(a)cos(b) + i sinh(a)sin(b)
sech(a+bi) = 1 / cosh(a+bi)</code></pre>



<p>cosh(a+bi) を求めてから逆数を取るというシンプルな構造ですね。実部だけの複素数（虚部0）を渡すと、通常の sech(a) と同じ結果になりますよ。</p>



<figure class="wp-block-table"><table><thead><tr><th>複素数（z）</th><th>IMSECH(z)の結果（概算）</th><th>備考</th></tr></thead><tbody><tr><td>0+0i</td><td>1</td><td>sech(0) = 1/cosh(0) = 1</td></tr><tr><td>1+0i</td><td>約 0.6481</td><td>sech(1) ≈ 0.6481</td></tr><tr><td>2+0i</td><td>約 0.2658</td><td>cosh(2) が大きくなる分0に近づく</td></tr><tr><td>1+1i</td><td>約 0.4983-0.5910i</td><td>cosh(1+i) の逆数</td></tr><tr><td>0+1i</td><td>約 1.8508</td><td>sec(1) と同値</td></tr></tbody></table></figure>



<p>IMSECH関数を使えば、この表の右側にある「複素数の双曲線セカント」をサクッと取り出せます。Excelとの互換性も完璧で、Excel 2013以降のすべてのバージョンに対応していますよ。</p>



<p>複素数の双曲線正割は、伝送線路の特性インピーダンス計算・フィルタ伝達関数の評価・複素解析の学習教材・特殊関数の数値表など、複素双曲線関数が必要な場面で活躍する基礎パーツですね。</p>



<h2 class="wp-block-heading"><span id="toc2">IMSECH関数の書き方（構文と引数）</span></h2>



<h3 class="wp-block-heading"><span id="toc3">基本構文</span></h3>



<pre class="wp-block-code"><code>=IMSECH(複素数)</code></pre>



<p>引数は1つだけで、必須です。</p>



<h3 class="wp-block-heading"><span id="toc4">引数の詳細</span></h3>



<figure class="wp-block-table"><table><thead><tr><th>引数</th><th>必須/任意</th><th>説明</th></tr></thead><tbody><tr><td>複素数（inumber）</td><td>必須</td><td>双曲線正割を求めたい複素数。文字列またはセル参照で指定する</td></tr></tbody></table></figure>



<p>引数には「&#8221;1+1i&#8221;」や「&#8221;1+1j&#8221;」のような複素数文字列を直接渡せます。COMPLEX関数（実数と虚数から複素数を作成する関数）の結果や、複素数が入ったセルの参照も指定できますよ。</p>



<p>虚数単位は小文字の「i」または「j」のどちらでも受け付けます。数学では「i」、電気工学では「j」が使われる慣習ですね。IMSECH関数はどちらでも同じように動作してくれます。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>TIP</strong></p><p>戻り値は元の入力と同じ虚数単位で返されます。「1+1i」を渡せば「i」付きで、「1+1j」を渡せば「j」付きで返るので、表記の統一性も保たれますよ。</p></blockquote>



<p>虚部の単位はラジアンです。度数（°）で角度を持っている場合は、RADIANS関数で先にラジアンに変換しておきましょう。</p>



<h2 class="wp-block-heading"><span id="toc5">スプレッドシートのIMSECH関数の基本的な使い方</span></h2>



<h3 class="wp-block-heading"><span id="toc6">文字列で複素数を直接指定する</span></h3>



<p>複素数文字列をそのまま引数に渡してみましょう。</p>



<pre class="wp-block-code"><code>=IMSECH(&quot;1+1i&quot;)</code></pre>



<p>結果は「0.4983370305&#8230;-0.5910838417&#8230;i」になります。手計算で確認すると cosh(1+i) = cosh(1)cos(1) + i sinh(1)sin(1) ≈ 0.8337 + 0.9889i で、その逆数を取ると約 0.4983 − 0.5910i なので、計算が合っていますね。</p>



<p>実部だけの複素数（虚部0）を渡すと、通常の双曲線セカントと同じ結果になります。</p>



<pre class="wp-block-code"><code>=IMSECH(&quot;1+0i&quot;)</code></pre>



<p>結果は約「0.6481」です。sech(1) = 1/cosh(1) ≈ 1/1.5431 ≈ 0.6481 という基本的な値が返ってきますね。</p>



<p>虚部だけの純虚数を渡すと、通常のセカント（sec）と同じ値になります。</p>



<pre class="wp-block-code"><code>=IMSECH(&quot;0+1i&quot;)</code></pre>



<p>結果は約「1.8508」になります。sech(i) = 1/cosh(i) = 1/cos(1) = sec(1) ≈ 1.8508 なので、双曲線関数と三角関数が「実部と虚部を入れ替える」関係でつながっているのが分かりますね。</p>



<h3 class="wp-block-heading"><span id="toc7">セル参照で複素数を指定する</span></h3>



<p>実務ではセルに入った複素数を扱う場面が多いですよね。A2に「2+1i」が入っている場合は次のように書きます。</p>



<pre class="wp-block-code"><code>=IMSECH(A2)</code></pre>



<p>結果は約「0.1512-0.2270i」になります。セル参照を渡すだけで、入っている複素数の双曲線セカントを取り出せますよ。</p>



<h3 class="wp-block-heading"><span id="toc8">COMPLEX関数と組み合わせる</span></h3>



<p><a href="https://mashukabu.com/spreadsheet-complex-function/">COMPLEX関数</a>で作った複素数の双曲線セカントを、その場で計算することもできます。</p>



<pre class="wp-block-code"><code>=IMSECH(COMPLEX(1, 1))</code></pre>



<p>結果は約「0.4983-0.5910i」、つまり「IMSECH(&#8220;1+1i&#8221;)」と同じですね。COMPLEX(1, 1)が内部で「1+1i」を作り、IMSECH関数がそのsechを返してくれます。</p>



<p>実部と虚部がセルに分かれているデータを扱うときに便利な書き方ですよ。</p>



<h3 class="wp-block-heading"><span id="toc9">IMCOSH関数の逆数として書き換える</span></h3>



<p>IMSECH関数は定義上、IMDIV関数（複素数の割り算）とIMCOSH関数（複素数のcosh）を組み合わせても表現できます。</p>



<pre class="wp-block-code"><code>=IMSECH(&quot;1+1i&quot;)
=IMDIV(&quot;1&quot;, IMCOSH(&quot;1+1i&quot;))</code></pre>



<p>どちらも結果は同じ約「0.4983-0.5910i」になりますね。IMSECH関数は内部で同じ計算をしてくれるので、わざわざIMDIVとIMCOSHを書く必要はありません。読みやすさ・タイプ量・エラーの起きにくさのどれを取ってもIMSECHの方が有利ですよ。</p>



<h3 class="wp-block-heading"><span id="toc10">度数からの変換と組み合わせる</span></h3>



<p>虚部が度数（°）で与えられているときは、RADIANS関数でラジアンに直してから渡します。</p>



<pre class="wp-block-code"><code>=IMSECH(COMPLEX(1, RADIANS(30)))</code></pre>



<p>A列の度数を一気にラジアンに変換してから処理したい場合は、ARRAYFORMULA関数（数式を範囲全体に展開する関数）を併用すると便利ですね。</p>



<h3 class="wp-block-heading"><span id="toc11">ARRAYFORMULAで複数行を一括処理する</span></h3>



<p>複素数のリストから一気に双曲線セカントの列を作りたい場面もありますよね。そんなときはARRAYFORMULA関数と組み合わせます。</p>



<pre class="wp-block-code"><code>=ARRAYFORMULA(IMSECH(A2:A10))</code></pre>



<p>A列に並んだ複素数から、対応する sech の値をB列に一発で展開できますよ。複素双曲線関数のテーブルを作るときに重宝しますね。</p>



<h2 class="wp-block-heading"><span id="toc12">IMSECH関数の実務活用例</span></h2>



<h3 class="wp-block-heading"><span id="toc13">活用例1: IMCOSHとの関係を検算する</span></h3>



<p>複素数の双曲線セカントは sech(z) = 1/cosh(z) という定義そのままなので、IMCOSH関数とIMPRODUCT関数を使って検算できます。</p>



<p>A2に「1.5+0.7i」が入っているとします。</p>



<pre class="wp-block-code"><code>B2: =IMSECH(A2)                       ← sechを直接計算
C2: =IMCOSH(A2)                       ← coshを計算
D2: =IMPRODUCT(B2, C2)                ← B2とC2の積（≈ 1+0i のはず）
E2: =IMSUB(D2, &quot;1&quot;)                   ← D2と1の差（≈ 0+0i のはず）</code></pre>



<p>D2が「ほぼ 1+0i」、E2が「ほぼ 0+0i」になっていれば、IMSECH関数が定義どおり動いている証拠ですね。シート上で自動チェックを仕込んでおくと、入力ミスにも気付きやすくなりますよ。</p>



<h3 class="wp-block-heading"><span id="toc14">活用例2: 複素双曲線関数テーブルを作る</span></h3>



<p>複素双曲線関数の挙動を学習するときは、IMSINH・IMCOSH・IMTANH・IMSECH・IMCSCH・IMCOTHを並べた一覧表があると便利ですよね。</p>



<pre class="wp-block-code"><code>A2: 0.5+0.5i
B2: =IMSINH(A2)       ← sinh
C2: =IMCOSH(A2)       ← cosh
D2: =IMTANH(A2)       ← tanh
E2: =IMSECH(A2)       ← sech
F2: =IMCSCH(A2)       ← cosech
G2: =IMCOTH(A2)       ← coth</code></pre>



<p>A列に複素数を並べておけば、複素双曲線関数の値を一気に俯瞰できます。複素解析の学習教材として、教科書の例題を確認するのにぴったりですね。</p>



<h3 class="wp-block-heading"><span id="toc15">活用例3: 伝送線路の特性で使う</span></h3>



<p>電気工学の伝送線路解析では、<code>sech(γl)</code> という形（γ: 伝搬定数、l: 線路長）が登場します。γ = α + jβ と複素数で与えられるので、IMSECH関数を使えばシート上で素直に評価できますよ。</p>



<pre class="wp-block-code"><code>A2: =COMPLEX(0.05, 1.2, &quot;j&quot;)    ← γl = 0.05+1.2j（仮の値）
B2: =IMSECH(A2)                 ← sech(γl)
C2: =IMABS(B2)                  ← |sech(γl)|（減衰量の指標）
D2: =IMARGUMENT(B2)             ← arg sech(γl)（位相）</code></pre>



<p>電気工学の慣習に合わせて虚数単位を「j」にしたい場合は、COMPLEX関数の第3引数で指定できますね。教科書の例題を再現する用途に向いています。</p>



<h3 class="wp-block-heading"><span id="toc16">活用例4: 複素関数の値を可視化するシートを作る</span></h3>



<p>複素関数の挙動を可視化したいときは、x = -3〜3 を細かく刻み、それぞれに IMSECH を適用してから絶対値や実部・虚部を別列に取り出します。</p>



<pre class="wp-block-code"><code>A2: -3
A3: =A2+0.1                      ← 0.1刻みで増やす
B2: =IMSECH(COMPLEX(A2, 0.5))    ← 虚部固定でsechを評価
C2: =IMREAL(B2)                  ← 実部
D2: =IMAGINARY(B2)               ← 虚部
E2: =IMABS(B2)                   ← 絶対値</code></pre>



<p>C列〜E列をグラフ化すれば、IMSECHの実部・虚部・絶対値の振る舞いが一目で分かりますね。複素双曲線関数の学習用シートとして再利用しやすい形です。</p>



<h3 class="wp-block-heading"><span id="toc17">活用例5: 数値が大きくなる「極」の検出</span></h3>



<p>cosh(z) = 0 となる点（z = i(π/2 + nπ)）の近くでは、sech(z) は無限大に発散します。IMABS関数で絶対値を測れば、数値計算上の不安定領域を検出できますよ。</p>



<pre class="wp-block-code"><code>A2: =COMPLEX(0, 1.5708)          ← ≈ i·π/2
B2: =IMSECH(A2)                  ← sech(iπ/2) は理論上∞
C2: =IMABS(B2)                   ← 巨大な値が出る
D2: =IF(C2&gt;1E10, &quot;極の近傍&quot;, &quot;OK&quot;)</code></pre>



<p>D列で警告を出しておくと、伝達関数の評価で「危険な点」をひと目で識別できますね。</p>



<h2 class="wp-block-heading"><span id="toc18">IMSECH関数とCOMPLEX関数群の関係</span></h2>



<p>複素数を扱う関数群の中で、IMSECH関数の位置づけを整理しておきましょう。</p>



<figure class="wp-block-table"><table><thead><tr><th>関数</th><th>入力</th><th>出力</th><th>役割</th></tr></thead><tbody><tr><td><a href="https://mashukabu.com/spreadsheet-complex-function/">COMPLEX</a></td><td>実数 a, b</td><td>複素数 a+bi</td><td>複素数を作る</td></tr><tr><td><a href="https://mashukabu.com/spreadsheet-imreal-function/">IMREAL</a></td><td>複素数 a+bi</td><td>実数 a</td><td>実部を取り出す</td></tr><tr><td><a href="https://mashukabu.com/spreadsheet-imaginary-function/">IMAGINARY</a></td><td>複素数 a+bi</td><td>実数 b</td><td>虚部を取り出す</td></tr><tr><td><a href="https://mashukabu.com/spreadsheet-imabs-function/">IMABS</a></td><td>複素数 a+bi</td><td>実数 √(a²+b²)</td><td>大きさを取り出す</td></tr><tr><td><a href="https://mashukabu.com/spreadsheet-imargument-function/">IMARGUMENT</a></td><td>複素数 a+bi</td><td>実数 atan2(b,a)</td><td>偏角を取り出す</td></tr><tr><td>IMCOSH</td><td>複素数 z</td><td>複素数 cosh(z)</td><td>双曲線コサインを計算する</td></tr><tr><td>IMSINH</td><td>複素数 z</td><td>複素数 sinh(z)</td><td>双曲線サインを計算する</td></tr><tr><td>IMSECH</td><td>複素数 z</td><td>複素数 1/cosh(z)</td><td>双曲線セカントを計算する</td></tr><tr><td>IMCSCH</td><td>複素数 z</td><td>複素数 1/sinh(z)</td><td>双曲線コセカントを計算する</td></tr><tr><td><a href="https://mashukabu.com/spreadsheet-imsec-function/">IMSEC</a></td><td>複素数 z</td><td>複素数 1/cos(z)</td><td>三角のセカントを計算する</td></tr></tbody></table></figure>



<p>IMSECHは「複素数から複素数を計算する」役割です。出力もそのまま複素数なので、IMSUMやIMPRODUCTにそのまま渡してさらに計算を続けられますよ。</p>



<p>たとえば sech(z) = 1/cosh(z) を IMDIV と IMCOSH で代用すると、こう書けます。</p>



<pre class="wp-block-code"><code>=IMSECH(&quot;1+1i&quot;)
=IMDIV(&quot;1&quot;, IMCOSH(&quot;1+1i&quot;))</code></pre>



<p>どちらも結果は約「0.4983-0.5910i」で同じですね。ただしIMSECHの方が読みやすく、タイプ量も少ないので、特別な理由がなければIMSECHを使う方が無難です。</p>



<p>三角版のセカント（1/cos(z)）が必要な場合は、専用の<a href="https://mashukabu.com/spreadsheet-imsec-function/">IMSEC関数</a>を使うと意図が明確になりますよ。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>NOTE</strong></p><p>IMSECとIMSECHは「実部と虚部を入れ替える」と互いに値が一致する関係があります。具体的には、純虚数 z=bi を渡したとき IMSECH(0+bi) = sec(b) になり、逆に IMSEC(0+bi) = sech(b) になります。三角と双曲線の対応を覚えておくと、検算が楽になりますよ。</p></blockquote>



<h2 class="wp-block-heading"><span id="toc19">IMSECH関数のよくあるエラーと対処法</span></h2>



<h3 class="wp-block-heading"><span id="toc20">#NUM! エラー（複素数の形式エラー）</span></h3>



<p>複素数として認識できない文字列を渡したときに発生します。虚数単位が大文字になっていたり、i・j以外の文字を使っている場合が典型例ですよ。</p>



<pre class="wp-block-code"><code>=IMSECH(&quot;1+1I&quot;)    → #NUM!（大文字のIは不可）
=IMSECH(&quot;1+1k&quot;)    → #NUM!（i・j以外は不可）
=IMSECH(&quot;１+１i&quot;)  → #NUM!（全角文字は不可）</code></pre>



<p>対処法は、複素数文字列を必ず半角の「a+bi」または「a+bj」の形式にすることです。虚数単位は小文字限定なので、CapsLockがオンになっていないか確認してくださいね。</p>



<p>スペースが入っている場合（例: <code>"1 + 1i"</code>）も認識できないことがあるので、余計な空白を除いておくと安心です。</p>



<h3 class="wp-block-heading"><span id="toc21">#VALUE! エラー（引数の型エラー）</span></h3>



<p>引数に論理値や、複素数として解釈できない値を渡したときに発生します。</p>



<pre class="wp-block-code"><code>=IMSECH(TRUE)   → #VALUE!（論理値は不可）
=IMSECH(#N/A)   → #N/A（エラー値はそのまま伝播）</code></pre>



<p>対処法は、引数を必ず複素数文字列または数値、もしくは複素数を返す関数の結果として渡すことです。他システムからコピーした値はテキスト扱いになっていることがあるので、<code>=ISTEXT(A2)</code> や <code>=ISNUMBER(A2)</code> でチェックしておくと安心ですよ。</p>



<h3 class="wp-block-heading"><span id="toc22">結果が極端な値になる（極の近傍）</span></h3>



<p>cosh(z) = 0 となる点（z = i(π/2 + nπ)）の近くでは、sech(z) の絶対値が爆発的に大きくなります。</p>



<pre class="wp-block-code"><code>=IMSECH(&quot;0+1.5707963267948i&quot;)   → 約 1.6×10^16（理論値は∞）</code></pre>



<p>対処法は、入力値が極の近くにないか事前にチェックすることです。<code>=IF(IMABS(IMCOSH(A2))<1E-10, "極の近傍", IMSECH(A2))</code> のように、cosh の絶対値が小さすぎるときは別処理に分岐させると安全ですね。</p>



<h3 class="wp-block-heading"><span id="toc23">結果の符号が想定と違う</span></h3>



<p>複素数の双曲線正割は、実部と虚部の符号が cosh の符号と「逆数の関係」で決まります。「なぜマイナスになるのか」と迷ったら、IMCOSH関数で先に cosh を確認してみましょう。</p>



<pre class="wp-block-code"><code>=IMCOSH(&quot;2+3i&quot;)          ← 元のcoshを確認
=IMSECH(&quot;2+3i&quot;)          ← sech（IMCOSHの逆数）</code></pre>



<p>cosh(z) の実部・虚部の符号と、sech の符号が「逆数の関係」になっているかをチェックすると原因が見えてきますよ。</p>



<h3 class="wp-block-heading"><span id="toc24">IFERRORでまとめてエラーを吸収する</span></h3>



<p>入力データの信頼性が低い場合は、IFERROR関数（エラー時に代替値を返す関数）で包んでおくとシート全体の集計が止まりません。</p>



<pre class="wp-block-code"><code>=IFERROR(IMSECH(A2), &quot;形式エラー&quot;)</code></pre>



<p>エラー時にメッセージを返すようにしておけば、安心して大量データに適用できますよ。</p>



<h2 class="wp-block-heading"><span id="toc25">IMSECH関数とExcelの互換性</span></h2>



<p>GoogleスプレッドシートのIMSECH関数は、ExcelのIMSECH関数と仕様が完全に一致しています。構文・引数・戻り値の形式・エラー条件まで同じですよ。</p>



<p>ExcelファイルをGoogleスプレッドシートで開いてもIMSECH関数はそのまま動作します。逆にスプレッドシートで作った数式をExcelで開いても問題ありませんね。</p>



<p>ExcelのIMSECH関数は、Excel 2013以降のすべてのバージョンで利用できます。Microsoft 365、Excel for Mac、Excel Online でも同じように使えますよ。Excel 2010以前のバージョンとファイルを共有する予定がある場合は、IMDIV・IMCOSHの組み合わせで代替する必要があるので、お使いのバージョンが対応しているか確認しておきましょう。</p>



<h2 class="wp-block-heading"><span id="toc26">複素数関連の関数一覧</span></h2>



<p>IMSECH関数と一緒に使うことが多い、複素数関連の関数をまとめました。</p>



<figure class="wp-block-table"><table><thead><tr><th>関数名</th><th>機能</th></tr></thead><tbody><tr><td><a href="https://mashukabu.com/spreadsheet-complex-function/">COMPLEX</a></td><td>実数と虚数から複素数を作成する</td></tr><tr><td><a href="https://mashukabu.com/spreadsheet-imreal-function/">IMREAL</a></td><td>複素数の実数係数を返す</td></tr><tr><td><a href="https://mashukabu.com/spreadsheet-imaginary-function/">IMAGINARY</a></td><td>複素数の虚数係数を返す</td></tr><tr><td><a href="https://mashukabu.com/spreadsheet-imabs-function/">IMABS</a></td><td>複素数の絶対値（大きさ）を返す</td></tr><tr><td><a href="https://mashukabu.com/spreadsheet-imargument-function/">IMARGUMENT</a></td><td>複素数の偏角（角度）をラジアンで返す</td></tr><tr><td><a href="https://mashukabu.com/spreadsheet-imconjugate-function/">IMCONJUGATE</a></td><td>共役複素数を返す</td></tr><tr><td>IMSUM</td><td>複素数の合計（足し算）を返す</td></tr><tr><td>IMSUB</td><td>複素数の差（引き算）を返す</td></tr><tr><td>IMPRODUCT</td><td>複素数の積（掛け算）を返す</td></tr><tr><td>IMDIV</td><td>複素数の商（割り算）を返す</td></tr><tr><td><a href="https://mashukabu.com/spreadsheet-impower-function/">IMPOWER</a></td><td>複素数のべき乗を返す</td></tr><tr><td>IMSQRT</td><td>複素数の平方根を返す</td></tr><tr><td>IMEXP</td><td>複素数の指数関数を返す</td></tr><tr><td>IMLN</td><td>複素数の自然対数を返す</td></tr><tr><td>IMCOSH</td><td>複素数のcoshを返す</td></tr><tr><td>IMSINH</td><td>複素数のsinhを返す</td></tr><tr><td>IMSECH</td><td>複素数の双曲線セカント（sech）を返す</td></tr><tr><td>IMCSCH</td><td>複素数の双曲線コセカント（cosech）を返す</td></tr><tr><td><a href="https://mashukabu.com/spreadsheet-imsec-function/">IMSEC</a></td><td>複素数の三角セカント（sec）を返す</td></tr></tbody></table></figure>



<p>IMSECH関数は、これら複素数関数群の中で「双曲線セカント（sech）を計算する」役割を担います。COMPLEXで作り、IMSECHで sech を取り、IMABS・IMARGUMENTで絶対値と偏角を確認するのが基本パターンですね。</p>



<h2 class="wp-block-heading"><span id="toc27">まとめ</span></h2>



<p>GoogleスプレッドシートのIMSECH関数は、複素数の双曲線正割（1/cosh(z)）を返す関数です。伝送線路の特性、フィルタ伝達関数の評価、複素解析の学習教材、特殊関数の数値表など、複素双曲線関数が必要な場面で欠かせない関数ですよ。</p>



<ul class="wp-block-list"><li>構文は <code>=IMSECH(複素数)</code> で引数は1つだけ必須</li><li>「a+bi」を渡すと sech(a+bi) = 1/cosh(a+bi) が返る</li><li>「a+bj」のような工学系表記もそのまま受け付ける</li><li>虚部の単位はラジアン（度数の場合はRADIANS関数で変換）</li><li>内部的には cosh(a+bi) = cosh(a)cos(b) + i sinh(a)sin(b) の逆数</li><li>COMPLEX関数の結果やセル参照、複素数演算の結果からsechを計算できる</li><li>IMCOSHとIMDIVの組み合わせと結果は同じだが、IMSECHの方が読みやすい</li><li>純虚数 0+bi の場合は通常のセカント sec(b) と同値</li><li>実数 a+0i の場合は通常の sech(a) と同値</li><li>極（cosh(z)=0、つまり純虚数 z=i(π/2+nπ) の近傍）では絶対値が爆発するので注意</li><li>ARRAYFORMULAで複数の複素数を一括処理できる</li><li>大文字の「I」「J」や全角文字、i・j以外の単位は #NUM! エラー</li><li>引数に論理値を渡すと #VALUE! エラー</li><li>ExcelのIMSECH関数と完全互換（Excel 2013以降）</li></ul>



<p>複素数の双曲線正割が必要になったら、IMSECH関数の出番ですよ。COMPLEX関数で複素数を作り、IMSECHでsechを取り、IMABS・IMARGUMENT・IMCOSHで結果を検算する流れで、エンジニアリング系のシートを軽快に組み立ててみてくださいね。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://mashukabu.com/spreadsheet-imsech-function/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>スプレッドシートのIMSIN関数の使い方｜複素数の正弦（サイン）を一発で計算</title>
		<link>https://mashukabu.com/spreadsheet-imsin-function/</link>
					<comments>https://mashukabu.com/spreadsheet-imsin-function/#respond</comments>
		
		<dc:creator><![CDATA[まっしゅ]]></dc:creator>
		<pubDate>Wed, 29 Apr 2026 11:24:23 +0000</pubDate>
				<category><![CDATA[Googleスプレッドシート]]></category>
		<category><![CDATA[IMSIN]]></category>
		<category><![CDATA[エンジニアリング関数]]></category>
		<category><![CDATA[サイン]]></category>
		<category><![CDATA[スプレッドシート]]></category>
		<category><![CDATA[正弦]]></category>
		<category><![CDATA[複素数]]></category>
		<guid isPermaLink="false">https://mashukabu.com/?p=6344</guid>

					<description><![CDATA[GoogleスプレッドシートのIMSIN関数の使い方を解説。複素数（a+bi）の正弦（サイン）を一発で求める基本構文、虚数単位i/jの扱い、COMPLEX関数やIMCOS・IMSINHとの連携、純虚数のときsinhと同値になる理由、信号処理・電気工学・複素解析の学習での実務活用例、よくあるエラー対処法まで実例付きで紹介します。]]></description>
										<content:encoded><![CDATA[
<p>「スプレッドシートで複素数のサイン（正弦）を計算したいけど、sin(a+bi) を実部と虚部に展開してから足し合わせるのは面倒&#8230;」</p>



<p>スプレッドシートで複素関数を扱っていると、複素数のサイン sin(z) が必要になる場面がありますよね。実部と虚部に分けて sin(a)·cosh(b) と cos(a)·sinh(b) を別々に計算し、最後に複素数の形に組み直す手作業はちょっと大変です。</p>



<p>そんなときに頼りになるのがGoogleスプレッドシートのIMSIN関数です。複素数を渡すだけでサイン sin(a+bi) を一発で返してくれるので、複素三角関数を使った数式が一気にすっきりしますよ。</p>



<p>ExcelのIMSIN関数と完全互換なので、Excelファイルとやり取りする現場でも安心ですね。COMPLEX関数で作った複素数や、IMSUM・IMPRODUCTの演算結果からも、そのままサインを計算できます。</p>



<p>この記事では、スプレッドシートのIMSIN関数の基本構文と実務での活用例を解説します。IMCOS関数との関係や、純虚数を入れたときに sinh と同値になる理由、よくあるエラーと対処法もしっかり紹介していきますよ。</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-6" checked><label class="toc-title" for="toc-checkbox-6">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">スプレッドシートのIMSIN関数とは？</a></li><li><a href="#toc2" tabindex="0">IMSIN関数の書き方（構文と引数）</a><ol><li><a href="#toc3" tabindex="0">基本構文</a></li><li><a href="#toc4" tabindex="0">引数の詳細</a></li></ol></li><li><a href="#toc5" tabindex="0">スプレッドシートのIMSIN関数の基本的な使い方</a><ol><li><a href="#toc6" tabindex="0">文字列で複素数を直接指定する</a></li><li><a href="#toc7" tabindex="0">セル参照で複素数を指定する</a></li><li><a href="#toc8" tabindex="0">COMPLEX関数と組み合わせる</a></li><li><a href="#toc9" tabindex="0">IMCOSと差で書き換える（参考）</a></li><li><a href="#toc10" tabindex="0">度数からの変換と組み合わせる</a></li><li><a href="#toc11" tabindex="0">ARRAYFORMULAで複数行を一括処理する</a></li></ol></li><li><a href="#toc12" tabindex="0">IMSIN関数の実務活用例</a><ol><li><a href="#toc13" tabindex="0">活用例1: IMCOSとの関係を検算する</a></li><li><a href="#toc14" tabindex="0">活用例2: 複素三角関数テーブルを作る</a></li><li><a href="#toc15" tabindex="0">活用例3: 信号処理のサイン応答を確認する</a></li><li><a href="#toc16" tabindex="0">活用例4: 複素関数の値を可視化するシートを作る</a></li><li><a href="#toc17" tabindex="0">活用例5: IMSINHとの関係を確認する</a></li></ol></li><li><a href="#toc18" tabindex="0">IMSIN関数とCOMPLEX関数群の関係</a></li><li><a href="#toc19" tabindex="0">IMSIN関数のよくあるエラーと対処法</a><ol><li><a href="#toc20" tabindex="0">#NUM! エラー（複素数の形式エラー）</a></li><li><a href="#toc21" tabindex="0">#VALUE! エラー（引数の型エラー）</a></li><li><a href="#toc22" tabindex="0">結果の桁が大きすぎる（虚部が大きい複素数）</a></li><li><a href="#toc23" tabindex="0">結果の符号が想定と違う</a></li><li><a href="#toc24" tabindex="0">IFERRORでまとめてエラーを吸収する</a></li></ol></li><li><a href="#toc25" tabindex="0">IMSIN関数とExcelの互換性</a></li><li><a href="#toc26" tabindex="0">複素数関連の関数一覧</a></li><li><a href="#toc27" tabindex="0">まとめ</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">スプレッドシートのIMSIN関数とは？</span></h2>



<p>GoogleスプレッドシートのIMSIN関数（イマジナリー・サイン関数）は、複素数の正弦（サイン）を返す関数です。エンジニアリング関数（電気・物理・工学系の計算で使う関数群）のひとつに分類されますよ。</p>



<p>読み方は「イマジナリー・サイン」または「アイエム・シン」で、英語の「imaginary number（虚数）」の「sine（正弦）」に由来します。複素数「a+bi」に対して、sin(a+bi) を返してくれるのが役割ですね。</p>



<p>そもそも複素数の正弦とは、実数の正弦（sin(x)）を複素数全体に拡張したものです。実部と虚部に分解した定義式は次のようになります。</p>



<pre class="wp-block-code"><code>sin(a+bi) = sin(a)·cosh(b) + i·cos(a)·sinh(b)</code></pre>



<p>実部側に「sin(a)·cosh(b)」、虚部側に「cos(a)·sinh(b)」が並ぶ構造ですね。実部だけの複素数（虚部0）を渡すと、通常の sin(a) と同じ結果になりますよ。</p>



<figure class="wp-block-table"><table><thead><tr><th>複素数（z）</th><th>IMSIN(z)の結果（概算）</th><th>備考</th></tr></thead><tbody><tr><td>0+0i</td><td>0</td><td>sin(0) = 0</td></tr><tr><td>1+0i</td><td>約 0.8415</td><td>sin(1ラジアン) ≈ 0.8415</td></tr><tr><td>0+1i</td><td>約 0+1.1752i</td><td>sin(i) = i·sinh(1)</td></tr><tr><td>1+1i</td><td>約 1.2985+0.6350i</td><td>sin(1)cosh(1) + i·cos(1)sinh(1)</td></tr><tr><td>2+3i</td><td>約 9.1545-4.1689i</td><td>虚部が大きくなると絶対値が急増する</td></tr></tbody></table></figure>



<p>IMSIN関数を使えば、この表の右側にある「複素数のサイン」をサクッと取り出せます。Excelとの互換性も完璧で、Excel 2013以降のすべてのバージョンに対応していますよ。</p>



<p>複素数のサインは、信号処理のフィルタ伝達関数・電気工学の交流回路解析・複素解析の学習教材・特殊関数の評価など、複素三角関数が必要な場面で活躍する基礎パーツですね。</p>



<h2 class="wp-block-heading"><span id="toc2">IMSIN関数の書き方（構文と引数）</span></h2>



<h3 class="wp-block-heading"><span id="toc3">基本構文</span></h3>



<pre class="wp-block-code"><code>=IMSIN(複素数)</code></pre>



<p>引数は1つだけで、必須です。</p>



<h3 class="wp-block-heading"><span id="toc4">引数の詳細</span></h3>



<figure class="wp-block-table"><table><thead><tr><th>引数</th><th>必須/任意</th><th>説明</th></tr></thead><tbody><tr><td>複素数（inumber）</td><td>必須</td><td>サインを求めたい複素数。文字列またはセル参照で指定する</td></tr></tbody></table></figure>



<p>引数には「&#8221;2+3i&#8221;」や「&#8221;2+3j&#8221;」のような複素数文字列を直接渡せます。COMPLEX関数（実数と虚数から複素数を作成する関数）の結果や、複素数が入ったセルの参照も指定できますよ。</p>



<p>虚数単位は小文字の「i」または「j」のどちらでも受け付けます。数学では「i」、電気工学では「j」が使われる慣習ですね。IMSIN関数はどちらでも同じように動作してくれます。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>TIP</strong></p><p>戻り値は元の入力と同じ虚数単位で返されます。「1+1i」を渡せば「i」付きで、「1+1j」を渡せば「j」付きで返るので、表記の統一性も保たれますよ。</p></blockquote>



<p>実部・虚部の単位はラジアンです。度数（°）で角度を持っている場合は、RADIANS関数で先にラジアンに変換しておきましょう。</p>



<h2 class="wp-block-heading"><span id="toc5">スプレッドシートのIMSIN関数の基本的な使い方</span></h2>



<h3 class="wp-block-heading"><span id="toc6">文字列で複素数を直接指定する</span></h3>



<p>複素数文字列をそのまま引数に渡してみましょう。</p>



<pre class="wp-block-code"><code>=IMSIN(&quot;1+1i&quot;)</code></pre>



<p>結果は「1.2984575814&#8230;+0.6349639147&#8230;i」になります。手計算で確認すると sin(1)·cosh(1) ≈ 0.8415 × 1.5431 ≈ 1.2985、cos(1)·sinh(1) ≈ 0.5403 × 1.1752 ≈ 0.6350 で、計算が合っていますね。</p>



<p>実部だけの複素数（虚部0）を渡すと、通常のサインと同じ結果になります。</p>



<pre class="wp-block-code"><code>=IMSIN(&quot;1+0i&quot;)</code></pre>



<p>結果は約「0.8415」です。sin(1ラジアン) ≈ 0.8415 という基本的な値が返ってきますね。</p>



<p>虚部だけの純虚数を渡すと、双曲線正弦（sinh）の i 倍になります。</p>



<pre class="wp-block-code"><code>=IMSIN(&quot;0+1i&quot;)</code></pre>



<p>結果は約「0+1.1752i」になります。sin(i) = i·sinh(1) ≈ 1.1752i なので、双曲線関数の世界とつながっているのが分かりますね。</p>



<h3 class="wp-block-heading"><span id="toc7">セル参照で複素数を指定する</span></h3>



<p>実務ではセルに入った複素数を扱う場面が多いですよね。A2に「2+3i」が入っている場合は次のように書きます。</p>



<pre class="wp-block-code"><code>=IMSIN(A2)</code></pre>



<p>結果は約「9.1545-4.1689i」になります。セル参照を渡すだけで、入っている複素数のサインを取り出せますよ。</p>



<p>虚部の cosh(3)・sinh(3) はそれぞれ 10.07・10.02 と大きな値になるため、実部・虚部とも絶対値が約9〜10と急増しています。複素数のサインは虚部が大きくなるほど指数関数的に大きくなるので、結果の桁感を見るときに頭の片隅に入れておくと安心ですね。</p>



<h3 class="wp-block-heading"><span id="toc8">COMPLEX関数と組み合わせる</span></h3>



<p><a href="https://mashukabu.com/spreadsheet-complex-function/">COMPLEX関数</a>で作った複素数のサインを、その場で計算することもできます。</p>



<pre class="wp-block-code"><code>=IMSIN(COMPLEX(1, 1))</code></pre>



<p>結果は約「1.2985+0.6350i」、つまり「IMSIN(&#8220;1+1i&#8221;)」と同じですね。COMPLEX(1, 1)が内部で「1+1i」を作り、IMSIN関数がそのサインを返してくれます。</p>



<p>実部と虚部がセルに分かれているデータを扱うときに便利な書き方ですよ。</p>



<h3 class="wp-block-heading"><span id="toc9">IMCOSと差で書き換える（参考）</span></h3>



<p>IMSIN関数は加法定理を使えば IMCOS と組み合わせて表現することもできます。たとえば sin(z) = cos(π/2 − z) という関係を使えば、IMCOS と IMSUB（複素数の差）で書き換え可能です。</p>



<pre class="wp-block-code"><code>=IMSIN(&quot;1+1i&quot;)
=IMCOS(IMSUB(COMPLEX(PI()/2, 0), &quot;1+1i&quot;))</code></pre>



<p>どちらも結果は約「1.2985+0.6350i」で同じになりますね。ただし読みやすさ・タイプ量・エラーの起きにくさのどれを取ってもIMSINの方が有利です。実務で書き換える理由はほぼないので、参考レベルで覚えておけば十分ですよ。</p>



<h3 class="wp-block-heading"><span id="toc10">度数からの変換と組み合わせる</span></h3>



<p>実部・虚部が度数（°）で与えられているときは、RADIANS関数でラジアンに直してから渡します。</p>



<pre class="wp-block-code"><code>=IMSIN(COMPLEX(RADIANS(60), RADIANS(30)))</code></pre>



<p>A列の度数を一気にラジアンに変換してから処理したい場合は、ARRAYFORMULA関数（数式を範囲全体に展開する関数）を併用すると便利ですね。</p>



<h3 class="wp-block-heading"><span id="toc11">ARRAYFORMULAで複数行を一括処理する</span></h3>



<p>複素数のリストから一気にサインの列を作りたい場面もありますよね。そんなときはARRAYFORMULA関数と組み合わせます。</p>



<pre class="wp-block-code"><code>=ARRAYFORMULA(IMSIN(A2:A10))</code></pre>



<p>A列に並んだ複素数から、対応する正弦の値をB列に一発で展開できますよ。複素三角関数のテーブルを作るときに重宝しますね。</p>



<h2 class="wp-block-heading"><span id="toc12">IMSIN関数の実務活用例</span></h2>



<h3 class="wp-block-heading"><span id="toc13">活用例1: IMCOSとの関係を検算する</span></h3>



<p>複素数のサインとコサインには三平方の関係 sin²(z) + cos²(z) = 1 が成り立ちます。IMSIN・IMCOS・IMPRODUCT・IMSUMで自動チェックを仕込んでおくと、入力ミスにも気付きやすくなりますよ。</p>



<p>A2に「1.5+0.7i」が入っているとします。</p>



<pre class="wp-block-code"><code>B2: =IMSIN(A2)                       ← サインを直接計算
C2: =IMCOS(A2)                       ← コサインを計算
D2: =IMPRODUCT(B2, B2)               ← sin²(z)
E2: =IMPRODUCT(C2, C2)               ← cos²(z)
F2: =IMSUM(D2, E2)                   ← sin² + cos²（≈ 1+0i のはず）</code></pre>



<p>F2が「ほぼ 1+0i」になっていれば、IMSIN関数とIMCOS関数が定義どおり動いている証拠ですね。シート上で自動チェックを仕込んでおくと、入力ミスにも気付きやすくなりますよ。</p>



<h3 class="wp-block-heading"><span id="toc14">活用例2: 複素三角関数テーブルを作る</span></h3>



<p>複素三角関数の挙動を学習するときは、IMSIN・IMCOS・IMSEC・IMCSC・IMTAN・IMCOTを並べた一覧表があると便利ですよね。</p>



<pre class="wp-block-code"><code>A2: 0.5+0.5i
B2: =IMSIN(A2)        ← サイン
C2: =IMCOS(A2)        ← コサイン
D2: =IMSEC(A2)        ← セカント
E2: =IMCSC(A2)        ← コセカント
F2: =IMTAN(A2)        ← タンジェント
G2: =IMCOT(A2)        ← コタンジェント</code></pre>



<p>A列に複素数を並べておけば、複素関数の値を一気に俯瞰できます。複素解析の学習教材として、教科書の例題を確認するのにぴったりですね。</p>



<h3 class="wp-block-heading"><span id="toc15">活用例3: 信号処理のサイン応答を確認する</span></h3>



<p>アナログフィルタや伝達関数の検討で H(s) = sin(s) のような形が登場することがあります。s = σ + jω に IMSIN を適用すれば、シート上で値の挙動を確認できますよ。</p>



<pre class="wp-block-code"><code>A2: =COMPLEX(0.1, 1.0, &quot;j&quot;)     ← s = 0.1+1.0j
B2: =IMSIN(A2)                  ← H(s) = sin(s)
C2: =IMABS(B2)                  ← |H(s)|（ゲイン）
D2: =IMARGUMENT(B2)             ← arg H(s)（位相）</code></pre>



<p>電気工学の慣習に合わせて虚数単位を「j」にしたい場合は、COMPLEX関数の第3引数で指定できますね。教科書のボード線図と見比べる用途に向いています。</p>



<h3 class="wp-block-heading"><span id="toc16">活用例4: 複素関数の値を可視化するシートを作る</span></h3>



<p>複素関数の値を可視化したいときは、x = -π〜π を細かく刻み、それぞれに IMSIN を適用してから絶対値や実部・虚部を別列に取り出します。</p>



<pre class="wp-block-code"><code>A2: -3.14
A3: =A2+0.1                    ← 0.1刻みで増やす
B2: =IMSIN(COMPLEX(A2, 0.5))   ← 虚部固定でサインを評価
C2: =IMREAL(B2)                ← 実部
D2: =IMAGINARY(B2)             ← 虚部
E2: =IMABS(B2)                 ← 絶対値</code></pre>



<p>C列〜E列をグラフ化すれば、IMSINの実部・虚部・絶対値の振る舞いが一目で分かりますね。複素三角関数の学習用シートとして再利用しやすい形です。</p>



<h3 class="wp-block-heading"><span id="toc17">活用例5: IMSINHとの関係を確認する</span></h3>



<p>複素双曲線正弦 sinh(z) と複素正弦 sin(z) には sinh(z) = -i·sin(iz) という関係があります。純虚数を入れると sin(bi) = i·sinh(b) になるので、IMSIN・IMSINHを並べると関係が一目で分かりますよ。</p>



<pre class="wp-block-code"><code>A2: =COMPLEX(0, 1)              ← z = 0+1i
B2: =IMSIN(A2)                  ← sin(i) = i·sinh(1) ≈ 0+1.1752i
C2: =IMSINH(COMPLEX(1, 0))      ← sinh(1) ≈ 1.1752+0i
D2: =IMAGINARY(B2)              ← B2の虚部 ≈ 1.1752
E2: =IMREAL(C2)                 ← C2の実部 ≈ 1.1752</code></pre>



<p>D2とE2が一致すれば、複素三角関数と複素双曲線関数の橋渡しができていますね。複素関数論の教科書で出てくる定義式を、シート上で実感しやすい組み方です。</p>



<h2 class="wp-block-heading"><span id="toc18">IMSIN関数とCOMPLEX関数群の関係</span></h2>



<p>複素数を扱う関数群の中で、IMSIN関数の位置づけを整理しておきましょう。</p>



<figure class="wp-block-table"><table><thead><tr><th>関数</th><th>入力</th><th>出力</th><th>役割</th></tr></thead><tbody><tr><td><a href="https://mashukabu.com/spreadsheet-complex-function/">COMPLEX</a></td><td>実数 a, b</td><td>複素数 a+bi</td><td>複素数を作る</td></tr><tr><td><a href="https://mashukabu.com/spreadsheet-imreal-function/">IMREAL</a></td><td>複素数 a+bi</td><td>実数 a</td><td>実部を取り出す</td></tr><tr><td><a href="https://mashukabu.com/spreadsheet-imaginary-function/">IMAGINARY</a></td><td>複素数 a+bi</td><td>実数 b</td><td>虚部を取り出す</td></tr><tr><td><a href="https://mashukabu.com/spreadsheet-imabs-function/">IMABS</a></td><td>複素数 a+bi</td><td>実数 √(a²+b²)</td><td>大きさを取り出す</td></tr><tr><td><a href="https://mashukabu.com/spreadsheet-imargument-function/">IMARGUMENT</a></td><td>複素数 a+bi</td><td>実数 atan2(b,a)</td><td>偏角を取り出す</td></tr><tr><td>IMSIN</td><td>複素数 z</td><td>複素数 sin(z)</td><td>サインを計算する</td></tr><tr><td><a href="https://mashukabu.com/spreadsheet-imcos-function/">IMCOS</a></td><td>複素数 z</td><td>複素数 cos(z)</td><td>コサインを計算する</td></tr><tr><td><a href="https://mashukabu.com/spreadsheet-imsec-function/">IMSEC</a></td><td>複素数 z</td><td>複素数 1/cos(z)</td><td>セカントを計算する</td></tr><tr><td>IMCSC</td><td>複素数 z</td><td>複素数 1/sin(z)</td><td>コセカントを計算する</td></tr><tr><td>IMSINH</td><td>複素数 z</td><td>複素数 sinh(z)</td><td>双曲線正弦を計算する</td></tr></tbody></table></figure>



<p>IMSINは「複素数から複素数を計算する」役割です。出力もそのまま複素数なので、IMSUMやIMPRODUCTにそのまま渡してさらに計算を続けられますよ。</p>



<p>たとえば三平方の関係 sin²(z) + cos²(z) = 1 を IMPRODUCT・IMSUM で組めば、IMSIN・IMCOS の動作確認シートを作れますね。</p>



<pre class="wp-block-code"><code>=IMSUM(IMPRODUCT(IMSIN(&quot;1+1i&quot;), IMSIN(&quot;1+1i&quot;)), IMPRODUCT(IMCOS(&quot;1+1i&quot;), IMCOS(&quot;1+1i&quot;)))</code></pre>



<p>結果はほぼ「1+0i」になるので、複素数でも三平方の関係が成り立っていることをシート上で確認できますよ。</p>



<p>双曲線版の正弦（sinh(z)）が必要な場合は、専用のIMSINH関数を使うと意図が明確になりますよ。</p>



<h2 class="wp-block-heading"><span id="toc19">IMSIN関数のよくあるエラーと対処法</span></h2>



<h3 class="wp-block-heading"><span id="toc20">#NUM! エラー（複素数の形式エラー）</span></h3>



<p>複素数として認識できない文字列を渡したときに発生します。虚数単位が大文字になっていたり、i・j以外の文字を使っている場合が典型例ですよ。</p>



<pre class="wp-block-code"><code>=IMSIN(&quot;1+1I&quot;)    → #NUM!（大文字のIは不可）
=IMSIN(&quot;1+1k&quot;)    → #NUM!（i・j以外は不可）
=IMSIN(&quot;１+１i&quot;)  → #NUM!（全角文字は不可）</code></pre>



<p>対処法は、複素数文字列を必ず半角の「a+bi」または「a+bj」の形式にすることです。虚数単位は小文字限定なので、CapsLockがオンになっていないか確認してくださいね。</p>



<p>スペースが入っている場合（例: <code>"1 + 1i"</code>）も認識できないことがあるので、余計な空白を除いておくと安心です。</p>



<h3 class="wp-block-heading"><span id="toc21">#VALUE! エラー（引数の型エラー）</span></h3>



<p>引数に論理値や、複素数として解釈できない値を渡したときに発生します。</p>



<pre class="wp-block-code"><code>=IMSIN(TRUE)   → #VALUE!（論理値は不可）
=IMSIN(#N/A)   → #N/A（エラー値はそのまま伝播）</code></pre>



<p>対処法は、引数を必ず複素数文字列または数値、もしくは複素数を返す関数の結果として渡すことです。他システムからコピーした値はテキスト扱いになっていることがあるので、<code>=ISTEXT(A2)</code> や <code>=ISNUMBER(A2)</code> でチェックしておくと安心ですよ。</p>



<h3 class="wp-block-heading"><span id="toc22">結果の桁が大きすぎる（虚部が大きい複素数）</span></h3>



<p>複素数のサインは sin(a)·cosh(b) + i·cos(a)·sinh(b) という構造のため、虚部 b が大きくなると cosh(b)・sinh(b) が指数関数的に増大します。結果の絶対値もあわせて急増するので、桁あふれや浮動小数点誤差の影響を受けやすくなりますよ。</p>



<pre class="wp-block-code"><code>=IMSIN(&quot;0+10i&quot;)    → 約 0+11013.23i（sinh(10)≈11013）
=IMSIN(&quot;0+20i&quot;)    → 約 0+2.4×10⁸i（sinh(20)≈2.4億）</code></pre>



<p>対処法は、入力する虚部の範囲を必要十分なところに絞ることです。グラフを描くときは虚部の絶対値が3〜5を超えると一気に値が跳ね上がります。軸スケールを対数にするか、IMABSで規格化してから描画しましょう。</p>



<h3 class="wp-block-heading"><span id="toc23">結果の符号が想定と違う</span></h3>



<p>複素数の正弦は実部方向に周期 2π を持ちつつ、虚部 b の符号で sinh(b) の符号が変わります。「なぜマイナスになるのか」と迷ったら、実部 a と虚部 b の値を確認しつつ、定義式に当てはめて符号を追ってみましょう。</p>



<pre class="wp-block-code"><code>=IMSIN(&quot;2+3i&quot;)    → 約 9.1545-4.1689i</code></pre>



<p>このケースでは cos(2) が約 -0.4161 と負の値です。そのため虚部「cos(2)·sinh(3) ≈ -0.4161 × 10.0179 ≈ -4.169」も負になっていますね。実数の cos(2) の符号を先に確認すれば、虚部の符号も納得できますよ。</p>



<h3 class="wp-block-heading"><span id="toc24">IFERRORでまとめてエラーを吸収する</span></h3>



<p>入力データの信頼性が低い場合は、IFERROR関数（エラー時に代替値を返す関数）で包んでおくとシート全体の集計が止まりません。</p>



<pre class="wp-block-code"><code>=IFERROR(IMSIN(A2), &quot;形式エラー&quot;)</code></pre>



<p>エラー時にメッセージを返すようにしておけば、安心して大量データに適用できますよ。</p>



<h2 class="wp-block-heading"><span id="toc25">IMSIN関数とExcelの互換性</span></h2>



<p>GoogleスプレッドシートのIMSIN関数は、ExcelのIMSIN関数と仕様が完全に一致しています。構文・引数・戻り値の形式・エラー条件まで同じですよ。</p>



<p>ExcelファイルをGoogleスプレッドシートで開いてもIMSIN関数はそのまま動作します。逆にスプレッドシートで作った数式をExcelで開いても問題ありませんね。</p>



<p>ExcelのIMSIN関数は、Excel 2013以降のすべてのバージョンで利用できます。Microsoft 365、Excel for Mac、Excel Online でも同じように使えますよ。Excel 2010以前のバージョンとファイルを共有する予定がある場合は、IMSUM・IMPRODUCT・IMEXP・IMDIVの組み合わせで代替する必要があるので、お使いのバージョンが対応しているか確認しておきましょう。</p>



<h2 class="wp-block-heading"><span id="toc26">複素数関連の関数一覧</span></h2>



<p>IMSIN関数と一緒に使うことが多い、複素数関連の関数をまとめました。</p>



<figure class="wp-block-table"><table><thead><tr><th>関数名</th><th>機能</th></tr></thead><tbody><tr><td><a href="https://mashukabu.com/spreadsheet-complex-function/">COMPLEX</a></td><td>実数と虚数から複素数を作成する</td></tr><tr><td><a href="https://mashukabu.com/spreadsheet-imreal-function/">IMREAL</a></td><td>複素数の実数係数を返す</td></tr><tr><td><a href="https://mashukabu.com/spreadsheet-imaginary-function/">IMAGINARY</a></td><td>複素数の虚数係数を返す</td></tr><tr><td><a href="https://mashukabu.com/spreadsheet-imabs-function/">IMABS</a></td><td>複素数の絶対値（大きさ）を返す</td></tr><tr><td><a href="https://mashukabu.com/spreadsheet-imargument-function/">IMARGUMENT</a></td><td>複素数の偏角（角度）をラジアンで返す</td></tr><tr><td><a href="https://mashukabu.com/spreadsheet-imconjugate-function/">IMCONJUGATE</a></td><td>共役複素数を返す</td></tr><tr><td>IMSUM</td><td>複素数の合計（足し算）を返す</td></tr><tr><td>IMSUB</td><td>複素数の差（引き算）を返す</td></tr><tr><td>IMPRODUCT</td><td>複素数の積（掛け算）を返す</td></tr><tr><td>IMDIV</td><td>複素数の商（割り算）を返す</td></tr><tr><td><a href="https://mashukabu.com/spreadsheet-impower-function/">IMPOWER</a></td><td>複素数のべき乗を返す</td></tr><tr><td>IMSQRT</td><td>複素数の平方根を返す</td></tr><tr><td>IMEXP</td><td>複素数の指数関数を返す</td></tr><tr><td>IMLN</td><td>複素数の自然対数を返す</td></tr><tr><td>IMSIN</td><td>複素数のサイン（正弦）を返す</td></tr><tr><td><a href="https://mashukabu.com/spreadsheet-imcos-function/">IMCOS</a></td><td>複素数のコサインを返す</td></tr><tr><td><a href="https://mashukabu.com/spreadsheet-imsec-function/">IMSEC</a></td><td>複素数のセカント（正割）を返す</td></tr><tr><td>IMCSC</td><td>複素数のコセカント（余割）を返す</td></tr><tr><td>IMSINH</td><td>複素数の双曲線正弦を返す</td></tr><tr><td><a href="https://mashukabu.com/spreadsheet-imsech-function/">IMSECH</a></td><td>複素数の双曲線セカントを返す</td></tr></tbody></table></figure>



<p>IMSIN関数は、これら複素数関数群の中で「サイン（正弦）を計算する」役割を担います。COMPLEXで作り、IMSINでサインを取り、IMABS・IMARGUMENTで絶対値と偏角を確認するのが基本パターンですね。</p>



<h2 class="wp-block-heading"><span id="toc27">まとめ</span></h2>



<p>GoogleスプレッドシートのIMSIN関数は、複素数の正弦（サイン）を返す関数です。信号処理のサイン応答、電気工学の交流回路解析、複素解析の学習教材、特殊関数の評価など、複素三角関数が必要な場面で欠かせない関数ですよ。</p>



<ul class="wp-block-list"><li>構文は <code>=IMSIN(複素数)</code> で引数は1つだけ必須</li><li>「a+bi」を渡すと sin(a+bi) = sin(a)·cosh(b) + i·cos(a)·sinh(b) が返る</li><li>「a+bj」のような工学系表記もそのまま受け付ける</li><li>実部・虚部の単位はラジアン（度数の場合はRADIANS関数で変換）</li><li>COMPLEX関数の結果やセル参照、複素数演算の結果からサインを計算できる</li><li>純虚数 0+bi の場合は i·sinh(b) と同値（IMSINHと密接な関係）</li><li>三平方の関係 sin²(z) + cos²(z) = 1 で IMCOS との検算ができる</li><li>虚部 b が大きいと cosh(b)・sinh(b) で絶対値が指数関数的に急増する</li><li>ARRAYFORMULAで複数の複素数を一括処理できる</li><li>大文字の「I」「J」や全角文字、i・j以外の単位は #NUM! エラー</li><li>引数に論理値を渡すと #VALUE! エラー</li><li>ExcelのIMSIN関数と完全互換（Excel 2013以降）</li></ul>



<p>複素数の正弦が必要になったら、IMSIN関数の出番ですよ。COMPLEX関数で複素数を作り、IMSINでサインを取り、IMABS・IMARGUMENT・IMCOSで結果を検算する流れで、エンジニアリング系のシートを軽快に組み立ててみてくださいね。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://mashukabu.com/spreadsheet-imsin-function/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>スプレッドシートのIMSINH関数の使い方｜複素数の双曲線正弦を一発で計算</title>
		<link>https://mashukabu.com/spreadsheet-imsinh-function/</link>
					<comments>https://mashukabu.com/spreadsheet-imsinh-function/#respond</comments>
		
		<dc:creator><![CDATA[まっしゅ]]></dc:creator>
		<pubDate>Wed, 29 Apr 2026 11:24:20 +0000</pubDate>
				<category><![CDATA[Googleスプレッドシート]]></category>
		<category><![CDATA[IMSINH]]></category>
		<category><![CDATA[エンジニアリング関数]]></category>
		<category><![CDATA[スプレッドシート]]></category>
		<category><![CDATA[双曲線正弦]]></category>
		<category><![CDATA[複素数]]></category>
		<guid isPermaLink="false">https://mashukabu.com/?p=6342</guid>

					<description><![CDATA[GoogleスプレッドシートのIMSINH関数の使い方を解説。複素数（a+bi）の双曲線正弦（ハイパボリックサイン）を一発で求める基本構文、虚数単位i/jの扱い、COMPLEX関数やIMCOSH関数との連携、定義式に基づく計算の仕組み、伝送線路の電流分布や減衰振動の速度応答での実務活用例、よくあるエラー対処法まで実例付きで紹介します。]]></description>
										<content:encoded><![CDATA[
<p>「スプレッドシートで複素数の双曲線正弦（ハイパボリックサイン）を計算したいけど、定義式から手で展開するのは骨が折れる&#8230;」</p>



<p>スプレッドシートで複素数を扱っていると、双曲線関数を複素数に拡張した計算が必要になる場面がありますよね。「sinh(a+bi) = sinh(a) × cos(b) + i cosh(a) × sin(b)」という式を毎回手で組み立てるのは、ちょっと手間がかかります。</p>



<p>そんなときに頼りになるのがGoogleスプレッドシートのIMSINH関数です。複素数を渡すだけで双曲線正弦の値を一発で返してくれますよ。伝送線路の電流分布や減衰振動の数式が一気にすっきりしますね。</p>



<p>ExcelのIMSINH関数と完全互換なので、Excelファイルとやり取りする現場でも安心ですね。COMPLEX関数で作った複素数や、IMSUM・IMPRODUCTの演算結果からも、そのまま双曲線正弦を計算できます。</p>



<p>この記事では、スプレッドシートのIMSINH関数の基本構文と実務での活用例を解説します。定義式に基づく内部計算の仕組みや、よくあるエラーと対処法もしっかり紹介していきますよ。</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-7" checked><label class="toc-title" for="toc-checkbox-7">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">スプレッドシートのIMSINH関数とは？</a></li><li><a href="#toc2" tabindex="0">IMSINH関数の書き方（構文と引数）</a><ol><li><a href="#toc3" tabindex="0">基本構文</a></li><li><a href="#toc4" tabindex="0">引数の詳細</a></li></ol></li><li><a href="#toc5" tabindex="0">IMSINH関数の基本的な使い方</a><ol><li><a href="#toc6" tabindex="0">文字列で複素数を直接指定する</a></li><li><a href="#toc7" tabindex="0">セル参照で複素数を指定する</a></li><li><a href="#toc8" tabindex="0">COMPLEX関数と組み合わせる</a></li><li><a href="#toc9" tabindex="0">度数法で角度を渡す（RADIANS関数と組み合わせる）</a></li><li><a href="#toc10" tabindex="0">ARRAYFORMULAで複数行を一括処理する</a></li></ol></li><li><a href="#toc11" tabindex="0">IMSINH関数の実務活用例</a><ol><li><a href="#toc12" tabindex="0">活用例1: 実部と虚部に分解して可視化する</a></li><li><a href="#toc13" tabindex="0">活用例2: 双曲線関数の定義式の検算</a></li><li><a href="#toc14" tabindex="0">活用例3: 伝送線路の電流分布シミュレーション</a></li><li><a href="#toc15" tabindex="0">活用例4: IMCOSH関数と組み合わせて双曲線関数恒等式を確認する</a></li><li><a href="#toc16" tabindex="0">活用例5: 双曲線タンジェント tanh(z) を IMSINH/IMCOSH で計算する</a></li></ol></li><li><a href="#toc17" tabindex="0">IMSINH関数とCOMPLEX関数群の関係</a><ol><li><a href="#toc18" tabindex="0">IMSINH と IMCOSH の違い（対称ペア）</a></li></ol></li><li><a href="#toc19" tabindex="0">IMSINH関数のよくあるエラーと対処法</a><ol><li><a href="#toc20" tabindex="0">#NUM! エラー（複素数の形式エラー）</a></li><li><a href="#toc21" tabindex="0">#VALUE! エラー（引数の型エラー）</a></li><li><a href="#toc22" tabindex="0">数値そのものを渡した場合</a></li><li><a href="#toc23" tabindex="0">実部が大きすぎてオーバーフロー</a></li><li><a href="#toc24" tabindex="0">IFERRORでまとめてエラーを吸収する</a></li></ol></li><li><a href="#toc25" tabindex="0">IMSINH関数とExcelの互換性</a></li><li><a href="#toc26" tabindex="0">複素数関連の関数一覧</a></li><li><a href="#toc27" tabindex="0">まとめ</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">スプレッドシートのIMSINH関数とは？</span></h2>



<p>GoogleスプレッドシートのIMSINH関数（イマジナリー・ハイパボリックサイン関数）は、複素数の双曲線正弦を返す関数です。エンジニアリング関数（電気・物理・工学系の計算で使う関数群）のひとつに分類されますよ。</p>



<p>読み方は「イマジナリー・シンチ」または「アイエム・シンチ」です。英語の「imaginary number（虚数）」の「hyperbolic sine（双曲線正弦）」に由来します。複素数「a+bi」に対して、複素数版の双曲線正弦を返してくれるのが役割ですね。</p>



<p>そもそも複素数の双曲線正弦とは、実数の双曲線関数を複素数全体に拡張したものです。定義式は次のようになります。</p>



<pre class="wp-block-code"><code>sinh(a+bi) = sinh(a) × cos(b) + i × cosh(a) × sin(b)</code></pre>



<p>実部は「sinh(a) × cos(b)」、虚部は「cosh(a) × sin(b)」となり、結果も複素数で返るのが特徴ですね。実数のSINH関数のように単調増加するだけでなく、虚部によって振動成分も加わる点を覚えておきましょう。</p>



<figure class="wp-block-table"><table><thead><tr><th>複素数（z）</th><th>IMSINH(z)の結果（概算）</th><th>内部計算</th></tr></thead><tbody><tr><td>0+0i</td><td>0</td><td>sinh(0) = 0</td></tr><tr><td>1+0i</td><td>1.1752011936438</td><td>sinh(1) ≈ 1.1752</td></tr><tr><td>0+π/2i</td><td>i</td><td>i × sin(π/2) = i × 1</td></tr><tr><td>1+1i</td><td>0.6349+1.2985i</td><td>sinh(1)cos(1) + i cosh(1)sin(1)</td></tr><tr><td>0+πi</td><td>0</td><td>i × sin(π) = 0</td></tr><tr><td>-1+0i</td><td>-1.1752011936438</td><td>sinh(-1) = -sinh(1)（奇関数）</td></tr></tbody></table></figure>



<p>IMSINH関数を使えば、この表の右側にある「複素数の双曲線正弦」をサクッと取り出せます。Excelとの互換性も完璧で、Excel 2013以降のすべてのバージョンに対応していますよ。</p>



<p>複素数の双曲線正弦は、複素双曲線関数が必要な場面で活躍する基礎パーツです。伝送線路の電流分布、減衰振動の速度応答、量子力学のトンネル効果、制御工学の伝達関数などで使われますね。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>TIP</strong></p><p>IMSINH関数は奇関数の性質を持っています。sinh(-z) = -sinh(z) が複素数でも成り立つので、符号反転した複素数を渡すと結果も符号反転して返ってきますよ。IMCOSH関数（偶関数 cosh(-z) = cosh(z)）と対照的な性質ですね。</p></blockquote>



<h2 class="wp-block-heading"><span id="toc2">IMSINH関数の書き方（構文と引数）</span></h2>



<h3 class="wp-block-heading"><span id="toc3">基本構文</span></h3>



<pre class="wp-block-code"><code>=IMSINH(複素数)</code></pre>



<p>引数は1つだけのシンプルな関数です。</p>



<h3 class="wp-block-heading"><span id="toc4">引数の詳細</span></h3>



<figure class="wp-block-table"><table><thead><tr><th>引数</th><th>必須/任意</th><th>説明</th></tr></thead><tbody><tr><td>複素数（inumber）</td><td>必須</td><td>双曲線正弦を求めたい複素数。文字列またはセル参照で指定する</td></tr></tbody></table></figure>



<p>引数には「&#8221;1+2i&#8221;」や「&#8221;1+2j&#8221;」のような複素数文字列を直接渡せます。COMPLEX関数（実数と虚数から複素数を作成する関数）の結果や、複素数が入ったセルの参照も指定できますよ。</p>



<p>虚数単位は小文字の「i」または「j」のどちらでも受け付けます。数学では「i」、電気工学では「j」が使われる慣習ですね。IMSINH関数はどちらでも同じように動作してくれます。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>TIP</strong></p><p>戻り値は元の入力と同じ虚数単位で返されます。「1+1i」を渡せば「i」付きで、「1+1j」を渡せば「j」付きで返るので、表記の統一性も保たれますよ。</p></blockquote>



<p>引数の虚部はラジアン（弧度法）で扱われる点に注意してください。度数法（°）で角度を渡したい場合は、RADIANS関数（度をラジアンに変換する関数）で事前に変換する必要がありますね。</p>



<h2 class="wp-block-heading"><span id="toc5">IMSINH関数の基本的な使い方</span></h2>



<h3 class="wp-block-heading"><span id="toc6">文字列で複素数を直接指定する</span></h3>



<p>複素数文字列をそのまま引数に渡してみましょう。</p>



<pre class="wp-block-code"><code>=IMSINH(&quot;1+1i&quot;)</code></pre>



<p>結果は「0.6349639147847+1.29845758141598i」になります。実部・虚部それぞれが小数で返ってきますね。</p>



<p>実部だけの複素数（虚部0）を渡すと、通常のSINH関数と同じ結果になります。</p>



<pre class="wp-block-code"><code>=IMSINH(&quot;0&quot;)
=IMSINH(&quot;1+0i&quot;)</code></pre>



<p>最初の式の結果は「0」、2番目は「1.1752011936438」ですね。sinh(0) = 0、sinh(1) ≈ 1.1752 という基本的な値が返ってきます。sinh(0) = 0 は IMSINH の覚えておきたい基本性質ですよ。</p>



<p>虚部だけの純虚数（実部0）を渡すと、結果は「i × sin(b)」になります。</p>



<pre class="wp-block-code"><code>=IMSINH(&quot;1i&quot;)</code></pre>



<p>結果は「0.841470984807897i」になります。これは i × sin(1) の値ですね。sinh(0+1i) = sinh(0)×cos(1) + i×cosh(0)×sin(1) = 0 + i×sin(1) という計算が裏で動いています。</p>



<h3 class="wp-block-heading"><span id="toc7">セル参照で複素数を指定する</span></h3>



<p>実務ではセルに入った複素数を扱う場面が多いですよね。A2に「1+2i」が入っている場合は次のように書きます。</p>



<pre class="wp-block-code"><code>=IMSINH(A2)</code></pre>



<p>結果は「-0.489056259041294+1.40311925062204i」になります。セル参照を渡すだけで、入っている複素数の双曲線正弦を取り出せますよ。</p>



<h3 class="wp-block-heading"><span id="toc8">COMPLEX関数と組み合わせる</span></h3>



<p><a href="https://mashukabu.com/spreadsheet-complex-function/">COMPLEX関数</a>で作った複素数の双曲線正弦を、その場で計算することもできます。</p>



<pre class="wp-block-code"><code>=IMSINH(COMPLEX(1, 1))</code></pre>



<p>結果は「0.6349639147847+1.29845758141598i」、つまり「IMSINH(&#8220;1+1i&#8221;)」と同じですね。COMPLEX(1, 1)が内部で「1+1i」を作り、IMSINH関数がその双曲線正弦を返してくれます。</p>



<p>数値で実部・虚部を渡したいときに便利な書き方ですよ。</p>



<h3 class="wp-block-heading"><span id="toc9">度数法で角度を渡す（RADIANS関数と組み合わせる）</span></h3>



<p>虚部を「30度」のような度数法で渡したい場合は、RADIANS関数で変換します。</p>



<pre class="wp-block-code"><code>=IMSINH(COMPLEX(0, RADIANS(30)))</code></pre>



<p>結果は「0.5i」、つまり i × sin(30°) = i × 0.5 ですね。実部0なので「i × sin(b)」の形が返ってきます。</p>



<p>実部・虚部の両方に度数法を使いたい場面では、両方をRADIANSで包みます。</p>



<pre class="wp-block-code"><code>=IMSINH(COMPLEX(RADIANS(30), RADIANS(45)))</code></pre>



<p>度数法で角度を扱う実務シートでは、RADIANSとセットで使うのが定番ですよ。</p>



<h3 class="wp-block-heading"><span id="toc10">ARRAYFORMULAで複数行を一括処理する</span></h3>



<p>複素数のリストから一気に双曲線正弦の列を作りたい場面もありますよね。そんなときはARRAYFORMULA関数（数式を範囲全体に展開する関数）と組み合わせます。</p>



<pre class="wp-block-code"><code>=ARRAYFORMULA(IMSINH(A2:A10))</code></pre>



<p>A列に並んだ複素数から、対応する双曲線正弦値をB列に一発で展開できますよ。伝送線路の各位置での電流分布を一括計算するときに重宝しますね。</p>



<h2 class="wp-block-heading"><span id="toc11">IMSINH関数の実務活用例</span></h2>



<h3 class="wp-block-heading"><span id="toc12">活用例1: 実部と虚部に分解して可視化する</span></h3>



<p>IMSINH関数の戻り値は複素数なので、グラフにしたいときは実部と虚部に分けて取り出します。IMREAL関数とIMAGINARY関数を組み合わせる流れですよ。</p>



<p>A列に複素数が並んでいるとしましょう。</p>



<pre class="wp-block-code"><code>B2: =IMSINH(A2)               ← 複素数の双曲線正弦
C2: =IMREAL(B2)               ← 実部
D2: =IMAGINARY(B2)            ← 虚部</code></pre>



<p>C列を実部、D列を虚部としてプロットすれば、複素平面上での挙動が一目で分かりますね。複素関数の振る舞いを学ぶ教材や、解析結果の可視化レポートで使えるパターンです。</p>



<h3 class="wp-block-heading"><span id="toc13">活用例2: 双曲線関数の定義式の検算</span></h3>



<p>定義式「sinh(z) = (e^z &#8211; e^(-z)) / 2」から、IMSINHとIMEXP（複素指数関数）を使って検算してみましょう。</p>



<p>セルA2に複素数「1+1i」が入っているとします。</p>



<pre class="wp-block-code"><code>=IMSINH(A2)
=IMDIV(IMSUB(IMEXP(A2), IMEXP(IMPRODUCT(&quot;-1&quot;, A2))), 2)</code></pre>



<p>両者は同じ結果「0.6349639147847+1.29845758141598i」になりますよ。複素関数論の基本公式を、スプレッドシート上で確認できる仕組みですね。教育用の教材や、数式処理ソフトの代替として使える場面です。</p>



<h3 class="wp-block-heading"><span id="toc14">活用例3: 伝送線路の電流分布シミュレーション</span></h3>



<p>電気工学の伝送線路理論では、線路上の電流分布が「I(x) = V0 / Z0 × sinh(γx)」という形で表されます。ここでγは伝搬定数（複素数 α+jβ）、Z0は特性インピーダンス、xは位置ですね。IMSINH関数を使うと、この式をそのままシートで計算できますよ。</p>



<p>具体的なパラメータで考えてみましょう。位置x=0.5、伝搬定数γ=0.1+2i、初期電圧V0=100V、特性インピーダンスZ0=50Ωとします。</p>



<pre class="wp-block-code"><code>A2: 0.5             ← 位置 x
B2: =IMSINH(COMPLEX(0.1*A2, 2*A2))    ← sinh(γx)
C2: =IMDIV(IMPRODUCT(100, B2), 50)    ← V0 / Z0 × sinh(γx)
D2: =IMABS(C2)                        ← 電流の大きさ</code></pre>



<p>D2の値が、その位置での電流の絶対値に対応しますね。同軸ケーブルや高周波回路の設計シートで活躍するパターンです。電圧分布（IMCOSH側）と電流分布（IMSINH側）はセットで計算するのが定番ですよ。</p>



<h3 class="wp-block-heading"><span id="toc15">活用例4: IMCOSH関数と組み合わせて双曲線関数恒等式を確認する</span></h3>



<p>複素数の双曲線関数にも「cosh²(z) &#8211; sinh²(z) = 1」という恒等式が成り立ちます。IMSINHとIMCOSH（複素双曲線コサイン関数）、IMPRODUCT、IMSUBを組み合わせて確認してみましょう。</p>



<pre class="wp-block-code"><code>A2: 1+1i
B2: =IMCOSH(A2)                              ← cosh(z)
C2: =IMSINH(A2)                              ← sinh(z)
D2: =IMSUB(IMPRODUCT(B2, B2), IMPRODUCT(C2, C2))   ← cosh²z - sinh²z</code></pre>



<p>D2の結果は「1」（実部1・虚部ほぼ0）になりますよ。複素数でも実数の双曲線関数と同じ恒等式が成り立つことを、数値で確認できる仕組みですね。</p>



<h3 class="wp-block-heading"><span id="toc16">活用例5: 双曲線タンジェント tanh(z) を IMSINH/IMCOSH で計算する</span></h3>



<p>スプレッドシートには標準で IMTANH 関数（複素双曲線タンジェント）が用意されていません。そのため tanh(z) = sinh(z) / cosh(z) の定義に従って、IMSINH と IMCOSH と IMDIV を組み合わせて計算します。</p>



<pre class="wp-block-code"><code>A2: 1+1i
B2: =IMDIV(IMSINH(A2), IMCOSH(A2))</code></pre>



<p>B2の結果は「1.08392332733869+0.271752585319512i」になります。これは複素数 z=1+i の双曲線タンジェントですね。減衰振動の位相解析や、伝送線路の特性インピーダンス計算で必要になる場面で使える書き方ですよ。</p>



<h2 class="wp-block-heading"><span id="toc17">IMSINH関数とCOMPLEX関数群の関係</span></h2>



<p>複素数を扱う関数群の中で、IMSINH関数の位置づけを整理しておきましょう。</p>



<figure class="wp-block-table"><table><thead><tr><th>関数</th><th>入力</th><th>出力</th><th>役割</th></tr></thead><tbody><tr><td><a href="https://mashukabu.com/spreadsheet-complex-function/">COMPLEX</a></td><td>実数 a, b</td><td>複素数 a+bi</td><td>複素数を作る</td></tr><tr><td><a href="https://mashukabu.com/spreadsheet-imreal-function/">IMREAL</a></td><td>複素数 a+bi</td><td>実数 a</td><td>実部を取り出す</td></tr><tr><td><a href="https://mashukabu.com/spreadsheet-imaginary-function/">IMAGINARY</a></td><td>複素数 a+bi</td><td>実数 b</td><td>虚部を取り出す</td></tr><tr><td><a href="https://mashukabu.com/spreadsheet-imabs-function/">IMABS</a></td><td>複素数 a+bi</td><td>実数 √(a²+b²)</td><td>大きさを取り出す</td></tr><tr><td><a href="https://mashukabu.com/spreadsheet-imargument-function/">IMARGUMENT</a></td><td>複素数 a+bi</td><td>実数 atan2(b,a)</td><td>偏角を取り出す</td></tr><tr><td><a href="https://mashukabu.com/spreadsheet-imconjugate-function/">IMCONJUGATE</a></td><td>複素数 a+bi</td><td>複素数 a-bi</td><td>共役を作る</td></tr><tr><td><a href="https://mashukabu.com/spreadsheet-imsin-function/">IMSIN</a></td><td>複素数 z</td><td>複素数 sin(z)</td><td>サインを計算する</td></tr><tr><td><a href="https://mashukabu.com/spreadsheet-imcos-function/">IMCOS</a></td><td>複素数 z</td><td>複素数 cos(z)</td><td>コサインを計算する</td></tr><tr><td><a href="https://mashukabu.com/spreadsheet-imcosh-function/">IMCOSH</a></td><td>複素数 z</td><td>複素数 cosh(z)</td><td>双曲線余弦を計算する</td></tr><tr><td>IMSINH</td><td>複素数 z</td><td>複素数 sinh(z)</td><td>双曲線正弦を計算する</td></tr></tbody></table></figure>



<p>IMREALやIMABSが「複素数から実数を取り出す」のに対して、IMSINH関数は「複素数から複素数を計算する」役割です。出力もそのまま複素数なので、IMSUMやIMPRODUCTにそのまま渡してさらに計算を続けられますよ。</p>



<p>たとえば定義式どおりにsinh(a+bi)を手動で組み立てると次のようになります。</p>



<pre class="wp-block-code"><code>=COMPLEX(SINH(IMREAL(A2))*COS(IMAGINARY(A2)), COSH(IMREAL(A2))*SIN(IMAGINARY(A2)))</code></pre>



<p>これはIMSINHと同じ結果になりますが、4つの関数を組み合わせる必要がありますよね。IMSINHを使えば1関数で済むので、数式が読みやすくなります。</p>



<h3 class="wp-block-heading"><span id="toc18">IMSINH と IMCOSH の違い（対称ペア）</span></h3>



<p>IMSINH と <a href="https://mashukabu.com/spreadsheet-imcosh-function/">IMCOSH</a> は双曲線関数の対称ペアです。性質の違いを表にまとめました。</p>



<figure class="wp-block-table"><table><thead><tr><th>項目</th><th>IMSINH</th><th>IMCOSH</th></tr></thead><tbody><tr><td>関数</td><td>sinh(z)</td><td>cosh(z)</td></tr><tr><td>偶奇</td><td>奇関数 sinh(-z)=-sinh(z)</td><td>偶関数 cosh(-z)=cosh(z)</td></tr><tr><td>0での値</td><td>sinh(0+0i) = 0</td><td>cosh(0+0i) = 1</td></tr><tr><td>純虚数 0+bi</td><td>i × sin(b)</td><td>cos(b)</td></tr><tr><td>定義式</td><td>sinh(a)cos(b) + i cosh(a)sin(b)</td><td>cosh(a)cos(b) + i sinh(a)sin(b)</td></tr><tr><td>物理的意味</td><td>伝送線路の電流分布、減衰系の速度</td><td>伝送線路の電圧分布、減衰系の応答</td></tr></tbody></table></figure>



<p>恒等式「cosh²(z) &#8211; sinh²(z) = 1」が成り立つので、検算の場面では両方を組み合わせて使うとミスが減りますよ。</p>



<h2 class="wp-block-heading"><span id="toc19">IMSINH関数のよくあるエラーと対処法</span></h2>



<h3 class="wp-block-heading"><span id="toc20">#NUM! エラー（複素数の形式エラー）</span></h3>



<p>複素数として認識できない文字列を渡したときに発生します。虚数単位が大文字になっていたり、i・j以外の文字を使っている場合が典型例ですよ。</p>



<pre class="wp-block-code"><code>=IMSINH(&quot;1+1I&quot;)   → #NUM!（大文字のIは不可）
=IMSINH(&quot;1+1k&quot;)   → #NUM!（i・j以外は不可）
=IMSINH(&quot;１+１i&quot;) → #NUM!（全角文字は不可）</code></pre>



<p>対処法は、複素数文字列を必ず半角の「a+bi」または「a+bj」の形式にすることです。虚数単位は小文字限定なので、CapsLockがオンになっていないか確認してくださいね。</p>



<p>スペースが入っている場合（例: <code>"1 + 1i"</code>）も認識できないことがあるので、余計な空白を除いておくと安心です。</p>



<h3 class="wp-block-heading"><span id="toc21">#VALUE! エラー（引数の型エラー）</span></h3>



<p>引数に論理値やエラー値を渡したときに発生します。</p>



<pre class="wp-block-code"><code>=IMSINH(TRUE)    → #VALUE!（論理値は不可）
=IMSINH(#N/A)    → #VALUE!（エラー値は不可）</code></pre>



<p>対処法は、正しい複素数文字列または数値・セル参照を渡すことです。入力元のセルがエラーになっている場合は、そのエラーを先に解消する必要がありますよ。</p>



<h3 class="wp-block-heading"><span id="toc22">数値そのものを渡した場合</span></h3>



<p>数値（虚部0の実数）を渡すと、実数のSINH関数と同じ値が返ります。</p>



<pre class="wp-block-code"><code>=IMSINH(0)    → 0
=IMSINH(1)    → 1.1752011936438...</code></pre>



<p>エラーにはなりません。ただし戻り値は複素数文字列として扱われる場合があるので、後続の数値計算で使うときはIMREAL関数で実部を取り出しておくと安心です。</p>



<h3 class="wp-block-heading"><span id="toc23">実部が大きすぎてオーバーフロー</span></h3>



<p>実部が極端に大きい複素数を渡すと、sinh(a)が指数関数的に大きくなって、計算結果がオーバーフローすることがあります。</p>



<pre class="wp-block-code"><code>=IMSINH(&quot;1000+0i&quot;)   → #NUM!（sinh(1000)が大きすぎる）</code></pre>



<p>対処法は、実部の値を物理的に意味のある範囲に制限することです。減衰計算なら時定数の数倍程度に抑える、といった調整が必要ですね。</p>



<h3 class="wp-block-heading"><span id="toc24">IFERRORでまとめてエラーを吸収する</span></h3>



<p>入力データの信頼性が低い場合は、IFERROR関数（エラー時に代替値を返す関数）で包んでおくとシート全体の集計が止まりません。</p>



<pre class="wp-block-code"><code>=IFERROR(IMSINH(A2), &quot;形式エラー&quot;)</code></pre>



<p>エラー時にメッセージを返すようにしておけば、安心して大量データに適用できますよ。</p>



<h2 class="wp-block-heading"><span id="toc25">IMSINH関数とExcelの互換性</span></h2>



<p>GoogleスプレッドシートのIMSINH関数は、ExcelのIMSINH関数と仕様が完全に一致しています。構文・引数・戻り値の形式・エラー条件まで同じですよ。</p>



<p>ExcelファイルをGoogleスプレッドシートで開いてもIMSINH関数はそのまま動作します。逆にスプレッドシートで作った数式をExcelで開いても問題ありませんね。</p>



<p>ExcelのIMSINH関数は、Excel 2013以降のバージョンで利用できます。Microsoft 365、Excel for Mac、Excel Online でも同じように使えますよ。Excel 2010以前のバージョンでは利用できないので、古い環境とファイルを共有する場合は注意してくださいね。</p>



<h2 class="wp-block-heading"><span id="toc26">複素数関連の関数一覧</span></h2>



<p>IMSINH関数と一緒に使うことが多い、複素数関連の関数をまとめました。</p>



<figure class="wp-block-table"><table><thead><tr><th>関数名</th><th>機能</th></tr></thead><tbody><tr><td><a href="https://mashukabu.com/spreadsheet-complex-function/">COMPLEX</a></td><td>実数と虚数から複素数を作成する</td></tr><tr><td><a href="https://mashukabu.com/spreadsheet-imreal-function/">IMREAL</a></td><td>複素数の実数係数を返す</td></tr><tr><td><a href="https://mashukabu.com/spreadsheet-imaginary-function/">IMAGINARY</a></td><td>複素数の虚数係数を返す</td></tr><tr><td><a href="https://mashukabu.com/spreadsheet-imabs-function/">IMABS</a></td><td>複素数の絶対値（大きさ）を返す</td></tr><tr><td><a href="https://mashukabu.com/spreadsheet-imargument-function/">IMARGUMENT</a></td><td>複素数の偏角（角度）をラジアンで返す</td></tr><tr><td><a href="https://mashukabu.com/spreadsheet-imconjugate-function/">IMCONJUGATE</a></td><td>共役複素数を返す</td></tr><tr><td><a href="https://mashukabu.com/spreadsheet-imsin-function/">IMSIN</a></td><td>複素数のサインを返す</td></tr><tr><td><a href="https://mashukabu.com/spreadsheet-imcos-function/">IMCOS</a></td><td>複素数のコサインを返す</td></tr><tr><td><a href="https://mashukabu.com/spreadsheet-imcosh-function/">IMCOSH</a></td><td>複素数の双曲線余弦を返す</td></tr><tr><td>IMSINH</td><td>複素数の双曲線正弦を返す</td></tr><tr><td>IMSUM</td><td>複素数の合計（足し算）を返す</td></tr><tr><td>IMSUB</td><td>複素数の差（引き算）を返す</td></tr><tr><td>IMPRODUCT</td><td>複素数の積（掛け算）を返す</td></tr><tr><td>IMDIV</td><td>複素数の商（割り算）を返す</td></tr><tr><td>IMEXP</td><td>複素数の指数関数を返す</td></tr><tr><td>IMLN</td><td>複素数の自然対数を返す</td></tr><tr><td>IMSQRT</td><td>複素数の平方根を返す</td></tr></tbody></table></figure>



<p>IMSINH関数は、これら複素数関数群の中で「双曲線正弦を計算する」役割を担います。COMPLEXで作り、IMSINHで双曲線正弦を取り、IMREAL・IMAGINARYで実部と虚部に分けて可視化するのが基本パターンですね。</p>



<h2 class="wp-block-heading"><span id="toc27">まとめ</span></h2>



<p>GoogleスプレッドシートのIMSINH関数は、複素数の双曲線正弦（ハイパボリックサイン）を返す関数です。伝送線路の電流分布、減衰振動の速度応答、量子力学のトンネル効果、制御工学の伝達関数など、複素双曲線関数が必要な場面で欠かせない関数ですよ。</p>



<ul class="wp-block-list"><li>構文は <code>=IMSINH(複素数)</code> で引数は1つだけのシンプルな関数</li><li>「a+bi」を渡すと「sinh(a)cos(b) + i cosh(a)sin(b)」が返る</li><li>「a+bj」のような工学系表記もそのまま受け付ける</li><li>引数の虚部はラジアンで扱う（度数法ならRADIANS関数で変換）</li><li>sinh(0+0i) = 0 が基本性質（IMCOSHの cosh(0)=1 と対照的）</li><li>虚部0の実数を渡すと、実数のSINH関数と同じ値になる</li><li>実部0の純虚数を渡すと、「i × sin(b)」の形で虚部だけが返る</li><li>IMSINHは奇関数 sinh(-z) = -sinh(z) の性質を持つ</li><li>COMPLEX関数の結果やセル参照、複素数演算の結果から双曲線正弦を計算できる</li><li>IMCOSH関数と組み合わせて双曲線関数恒等式 cosh²-sinh²=1 を確認できる</li><li>IMTANHは存在しないため、IMDIV(IMSINH, IMCOSH) で双曲線タンジェントを計算する</li><li>ARRAYFORMULAで複数の複素数を一括処理できる</li><li>大文字の「I」「J」や全角文字、i・j以外の単位は #NUM! エラー</li><li>論理値やエラー値を渡すと #VALUE! エラー</li><li>実部が極端に大きいとオーバーフローで #NUM! エラー</li><li>ExcelのIMSINH関数と完全互換（Excel 2013以降）</li></ul>



<p>複素数の双曲線正弦が必要になったら、IMSINH関数の出番ですよ。COMPLEX関数で複素数を作り、IMSINHで双曲線正弦を取り、IMREAL・IMAGINARYで成分を分解する流れで、エンジニアリング系のシートを軽快に組み立ててみてくださいね。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://mashukabu.com/spreadsheet-imsinh-function/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>スプレッドシートのIMSUB関数の使い方｜複素数の差を一発で計算</title>
		<link>https://mashukabu.com/spreadsheet-imsub-function/</link>
					<comments>https://mashukabu.com/spreadsheet-imsub-function/#respond</comments>
		
		<dc:creator><![CDATA[まっしゅ]]></dc:creator>
		<pubDate>Wed, 29 Apr 2026 11:24:17 +0000</pubDate>
				<category><![CDATA[Googleスプレッドシート]]></category>
		<category><![CDATA[IMSUB]]></category>
		<category><![CDATA[エンジニアリング関数]]></category>
		<category><![CDATA[スプレッドシート]]></category>
		<category><![CDATA[引き算]]></category>
		<category><![CDATA[複素数]]></category>
		<guid isPermaLink="false">https://mashukabu.com/?p=6340</guid>

					<description><![CDATA[GoogleスプレッドシートのIMSUB関数の使い方を解説。2つの複素数の差（引き算）を一発で計算できる基本構文、虚数単位i/jの扱い、COMPLEX関数やIMSUM・IMABSとの連携、複素平面の距離計算、ベクトル差分の代用例、電気工学・信号処理での実務活用、よくあるエラー対処法まで実例付きで紹介します。]]></description>
										<content:encoded><![CDATA[
<p>「スプレッドシートで2つの複素数の引き算をしたいけど、実部と虚部を別々に計算するのは面倒&#8230;」</p>



<p>スプレッドシートで複素数を扱っていると、(3+4i) − (1+2i) のような引き算が必要になる場面がありますよね。手計算なら実部と虚部をそれぞれ引き算すれば済みますが、データが何十行もあるとミスの温床になりがちです。</p>



<p>そんなときに頼りになるのがGoogleスプレッドシートのIMSUB関数です。複素数を2つ渡すだけで差を一発で返してくれるので、実部と虚部を個別に引き算する手間がなくなりますよ。</p>



<p>ExcelのIMSUB関数と完全互換なので、Excelファイルとやり取りする現場でも安心ですね。COMPLEX関数で作った複素数や、IMSUMの演算結果からも、そのまま差を計算できます。</p>



<p>この記事では、スプレッドシートのIMSUB関数の基本構文と実務での活用例を解説します。複素数の引き算の数学的背景や、IMSUM関数との違い、よくあるエラーと対処法もしっかり紹介していきますよ。</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-8" checked><label class="toc-title" for="toc-checkbox-8">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">スプレッドシートのIMSUB関数とは？</a></li><li><a href="#toc2" tabindex="0">IMSUB関数の書き方（構文と引数）</a><ol><li><a href="#toc3" tabindex="0">基本構文</a></li><li><a href="#toc4" tabindex="0">引数の詳細</a></li></ol></li><li><a href="#toc5" tabindex="0">IMSUB関数の基本的な使い方</a><ol><li><a href="#toc6" tabindex="0">文字列で複素数を直接指定する</a></li><li><a href="#toc7" tabindex="0">セル参照で複素数を指定する</a></li><li><a href="#toc8" tabindex="0">負の複素数の引き算</a></li><li><a href="#toc9" tabindex="0">虚数単位 j を使う場合</a></li><li><a href="#toc10" tabindex="0">COMPLEX関数と組み合わせる</a></li><li><a href="#toc11" tabindex="0">ARRAYFORMULAで複数行を一括処理する</a></li></ol></li><li><a href="#toc12" tabindex="0">IMSUB関数の実務活用例</a><ol><li><a href="#toc13" tabindex="0">活用例1: 電気回路のインピーダンス差分</a></li><li><a href="#toc14" tabindex="0">活用例2: 複素平面上の2点間の距離</a></li><li><a href="#toc15" tabindex="0">活用例3: 信号処理のフェーザ差分</a></li><li><a href="#toc16" tabindex="0">活用例4: 基準点からのオフセット計算</a></li><li><a href="#toc17" tabindex="0">活用例5: 制御工学の伝達関数比較</a></li></ol></li><li><a href="#toc18" tabindex="0">IMSUB関数とIMSUM関数の違い</a></li><li><a href="#toc19" tabindex="0">IMSUB関数のよくあるエラーと対処法</a><ol><li><a href="#toc20" tabindex="0">#NUM! エラー（複素数の形式エラー）</a></li><li><a href="#toc21" tabindex="0">#NUM! エラー（虚数単位の混在）</a></li><li><a href="#toc22" tabindex="0">#VALUE! エラー（引数の型エラー）</a></li><li><a href="#toc23" tabindex="0">結果が想定と違う（引数の順序の取り違え）</a></li><li><a href="#toc24" tabindex="0">IFERRORでまとめてエラーを吸収する</a></li></ol></li><li><a href="#toc25" tabindex="0">IMSUB関数とExcelの互換性</a></li><li><a href="#toc26" tabindex="0">複素数関連の関数一覧</a></li><li><a href="#toc27" tabindex="0">まとめ</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">スプレッドシートのIMSUB関数とは？</span></h2>



<p>GoogleスプレッドシートのIMSUB関数（イマジナリー・サブトラクト関数）は、2つの複素数の差（引き算）を返す関数です。エンジニアリング関数（電気・物理・工学系の計算で使う関数群）のひとつに分類されますよ。</p>



<p>読み方は「イマジナリー・サブトラクト」または「アイエム・サブ」で、英語の「imaginary number（虚数）」の「subtract（引く）」に由来します。複素数 z1 と z2 に対して、z1 − z2 を返してくれるのが役割ですね。</p>



<p>そもそも複素数の引き算は、実部と虚部をそれぞれ独立して引き算するシンプルな演算です。式で書くと次のようになりますね。</p>



<pre class="wp-block-code"><code>(a + bi) − (c + di) = (a − c) + (b − d)i</code></pre>



<p>実部の差 (a−c) と虚部の差 (b−d) を組み合わせるだけ、という素直な定義です。手計算でもできるのですが、データが多くなるとIMSUB関数で自動化したほうが圧倒的にラクですよ。</p>



<figure class="wp-block-table"><table><thead><tr><th>複素数1</th><th>複素数2</th><th>IMSUB(z1, z2)の結果</th><th>内部計算</th></tr></thead><tbody><tr><td>3+4i</td><td>1+2i</td><td>2+2i</td><td>実部 3-1=2、虚部 4-2=2</td></tr><tr><td>3+4i</td><td>-4+6i</td><td>7-2i</td><td>実部 3-(-4)=7、虚部 4-6=-2</td></tr><tr><td>2+3i</td><td>-1-2i</td><td>3+5i</td><td>実部 2-(-1)=3、虚部 3-(-2)=5</td></tr><tr><td>0+5i</td><td>0+2i</td><td>3i</td><td>実部 0、虚部 5-2=3</td></tr><tr><td>3+4i</td><td>3+4i</td><td>0</td><td>同じ複素数の差</td></tr></tbody></table></figure>



<p>IMSUB関数を使えば、この表の右側にある「複素数の差」をサクッと取り出せます。Excelとの互換性も完璧で、Excel 2007以降のすべてのバージョンに対応していますよ。</p>



<p>複素数の差は、電気回路のインピーダンス差分・信号処理のフェーザ演算・制御工学の伝達関数比較など、複素数演算が必要な場面で活躍する基礎パーツですね。</p>



<h2 class="wp-block-heading"><span id="toc2">IMSUB関数の書き方（構文と引数）</span></h2>



<h3 class="wp-block-heading"><span id="toc3">基本構文</span></h3>



<pre class="wp-block-code"><code>=IMSUB(複素数1, 複素数2)</code></pre>



<p>引数は2つあり、どちらも必須です。意味は単純で「複素数1 − 複素数2」を返してくれます。</p>



<h3 class="wp-block-heading"><span id="toc4">引数の詳細</span></h3>



<figure class="wp-block-table"><table><thead><tr><th>引数</th><th>必須/任意</th><th>説明</th></tr></thead><tbody><tr><td>複素数1（first_number）</td><td>必須</td><td>引かれる側の複素数。文字列またはセル参照で指定する</td></tr><tr><td>複素数2（second_number）</td><td>必須</td><td>引く側の複素数。文字列またはセル参照で指定する</td></tr></tbody></table></figure>



<p>引数1には「&#8221;3+4i&#8221;」や「&#8221;3+4j&#8221;」のような複素数文字列を直接渡せます。COMPLEX関数（実数と虚数から複素数を作成する関数）の結果や、複素数が入ったセルの参照も指定できますよ。</p>



<p>虚数単位は小文字の「i」または「j」のどちらでも受け付けます。数学では「i」、電気工学では「j」が使われる慣習ですね。IMSUB関数はどちらでも同じように動作してくれます。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>TIP</strong></p><p>戻り値は第1引数の虚数単位に従って返されます。「3+4i」を渡せば「i」付きで、「3+4j」を渡せば「j」付きで返るので、表記の統一性も保たれますよ。</p></blockquote>



<p>ただし、第1引数と第2引数で虚数単位を混在させるとエラーになります。両方とも「i」で揃えるか、両方とも「j」で揃える必要がありますね。</p>



<h2 class="wp-block-heading"><span id="toc5">IMSUB関数の基本的な使い方</span></h2>



<h3 class="wp-block-heading"><span id="toc6">文字列で複素数を直接指定する</span></h3>



<p>複素数文字列をそのまま引数に渡してみましょう。</p>



<pre class="wp-block-code"><code>=IMSUB(&quot;3+4i&quot;, &quot;1+2i&quot;)</code></pre>



<p>結果は「2+2i」になります。実部は 3−1=2、虚部は 4−2=2 という単純な計算ですね。</p>



<p>実部だけの複素数（虚部0）を渡すと、通常の引き算と同じ結果になります。</p>



<pre class="wp-block-code"><code>=IMSUB(&quot;5+0i&quot;, &quot;3+0i&quot;)</code></pre>



<p>結果は「2」です。5−3=2 という基本的な値が返ってきますね。</p>



<p>純虚数だけを渡すと、虚部の差だけが結果に残ります。</p>



<pre class="wp-block-code"><code>=IMSUB(&quot;0+5i&quot;, &quot;0+2i&quot;)</code></pre>



<p>結果は「3i」になります。実部はゼロ、虚部は 5−2=3 という計算ですね。</p>



<h3 class="wp-block-heading"><span id="toc7">セル参照で複素数を指定する</span></h3>



<p>実務ではセルに入った複素数を扱う場面が多いですよね。A2に「3+4i」、B2に「1+2i」が入っている場合は次のように書きます。</p>



<pre class="wp-block-code"><code>=IMSUB(A2, B2)</code></pre>



<p>結果は「2+2i」になります。セル参照を渡すだけで、入っている複素数の差を取り出せますよ。</p>



<h3 class="wp-block-heading"><span id="toc8">負の複素数の引き算</span></h3>



<p>引き算では符号の扱いがミスの原因になりがちですが、IMSUB関数なら自動でやってくれます。</p>



<pre class="wp-block-code"><code>=IMSUB(&quot;2+3i&quot;, &quot;-1-2i&quot;)</code></pre>



<p>結果は「3+5i」です。手計算では (2+3i) − (−1−2i) = 2+3i+1+2i = 3+5i となりますね。マイナス × マイナス = プラス の符号反転を、IMSUBが正確に処理してくれます。</p>



<h3 class="wp-block-heading"><span id="toc9">虚数単位 j を使う場合</span></h3>



<p>電気工学では虚数単位として「j」が使われる慣習があります。両方の引数で「j」に統一すれば、そのまま動作しますよ。</p>



<pre class="wp-block-code"><code>=IMSUB(&quot;3+4j&quot;, &quot;1+2j&quot;)</code></pre>



<p>結果は「2+2j」になります。戻り値も「j」付きで返るので、工学系のレポートでも使いやすいですね。</p>



<h3 class="wp-block-heading"><span id="toc10">COMPLEX関数と組み合わせる</span></h3>



<p><a href="https://mashukabu.com/spreadsheet-complex-function/">COMPLEX関数</a>で作った複素数の差を、その場で計算することもできます。</p>



<pre class="wp-block-code"><code>=IMSUB(COMPLEX(3, 4), COMPLEX(1, 2))</code></pre>



<p>結果は「2+2i」、つまり「IMSUB(&#8220;3+4i&#8221;, &#8220;1+2i&#8221;)」と同じですね。実部と虚部がセルに分かれているデータを扱うときに便利な書き方ですよ。</p>



<h3 class="wp-block-heading"><span id="toc11">ARRAYFORMULAで複数行を一括処理する</span></h3>



<p>複素数のリストから一気に差の列を作りたい場面もありますよね。そんなときはARRAYFORMULA関数（数式を範囲全体に展開する関数）と組み合わせます。</p>



<pre class="wp-block-code"><code>=ARRAYFORMULA(IMSUB(A2:A10, B2:B10))</code></pre>



<p>A列とB列に並んだ複素数から、対応する差の値をC列に一発で展開できますよ。データ点ごとの差分を一括で計算するときに重宝しますね。</p>



<h2 class="wp-block-heading"><span id="toc12">IMSUB関数の実務活用例</span></h2>



<h3 class="wp-block-heading"><span id="toc13">活用例1: 電気回路のインピーダンス差分</span></h3>



<p>交流回路の解析では、全体インピーダンスから特定の素子のインピーダンスを引いて残りを求める計算がよくあります。</p>



<p>抵抗R=10Ω、リアクタンスX=20Ω の素子を含む回路を考えてみましょう。全体 Z_total = 30+50j、既知部分 Z_known = 10+20j のとき、残りの部分は次のように計算できますよ。</p>



<pre class="wp-block-code"><code>A2: =COMPLEX(30, 50, &quot;j&quot;)     ← Z_total = 30+50j
B2: =COMPLEX(10, 20, &quot;j&quot;)     ← Z_known = 10+20j
C2: =IMSUB(A2, B2)            ← Z_remain = 20+30j</code></pre>



<p>電気工学の慣習に合わせて虚数単位を「j」にしたい場合は、COMPLEX関数の第3引数で指定できますね。</p>



<h3 class="wp-block-heading"><span id="toc14">活用例2: 複素平面上の2点間の距離</span></h3>



<p>複素数は複素平面（実部を横軸、虚部を縦軸にとった平面）上の点として扱えます。2点間の距離は、差の絶対値 |z1 − z2| で計算できますよ。</p>



<p>A2に「3+4i」、B2に「0+0i」が入っているとします。</p>



<pre class="wp-block-code"><code>=IMABS(IMSUB(A2, B2))</code></pre>



<p>結果は「5」になります。原点から (3, 4) までの距離 √(9+16) = 5 ですね。これは2次元のユークリッド距離と完全に一致します。</p>



<p>ベクトル演算の代用として複素数を使うパターンですよ。実部をx座標、虚部をy座標とみなせば、IMSUBが「ベクトルの差」、IMABSが「ベクトルの大きさ」として機能してくれます。</p>



<h3 class="wp-block-heading"><span id="toc15">活用例3: 信号処理のフェーザ差分</span></h3>



<p>信号処理では、入力信号と出力信号の振幅・位相をフェーザ（複素数）で表します。出力フェーザから入力フェーザを引くと、変化量がそのまま得られますよ。</p>



<p>入力 V_in = 5+0j（振幅5、位相0）、出力 V_out = 4+3j のとき、変化量は次のように計算できます。</p>



<pre class="wp-block-code"><code>A2: =COMPLEX(4, 3, &quot;j&quot;)       ← V_out = 4+3j
B2: =COMPLEX(5, 0, &quot;j&quot;)       ← V_in = 5+0j
C2: =IMSUB(A2, B2)            ← ΔV = -1+3j
D2: =IMABS(C2)                ← |ΔV| ≈ 3.16（変化量の大きさ）
E2: =IMARGUMENT(C2)           ← 変化の位相（rad）</code></pre>



<p>差を取ってからIMABSとIMARGUMENTで大きさと位相を取り出す流れは、フェーザ解析の定番パターンですね。</p>



<h3 class="wp-block-heading"><span id="toc16">活用例4: 基準点からのオフセット計算</span></h3>



<p>データ点を基準点からの差で正規化したいときも、IMSUB関数が便利です。基準点 z0 からの各データ点 zi のオフセットを一括で計算できますよ。</p>



<p>A列に複素数のデータ、B1セルに基準点が入っている場合はこう書きます。</p>



<pre class="wp-block-code"><code>=ARRAYFORMULA(IMSUB(A2:A10, $B$1))</code></pre>



<p>データ点ごとに「基準点からのズレ」を複素数で表現できますね。複素平面上での相対位置の可視化や、データのバラつき分析に応用できますよ。</p>



<h3 class="wp-block-heading"><span id="toc17">活用例5: 制御工学の伝達関数比較</span></h3>



<p>制御工学では、2つの系の周波数応答を比較するために複素数の差を取ることがあります。同じ周波数での応答 H1(jω) と H2(jω) の差から、系の違いを定量化できますよ。</p>



<p>A2に系1の応答、B2に系2の応答が入っているとします。</p>



<pre class="wp-block-code"><code>A2: 0.8+0.4j                  ← H1(jω)
B2: 0.7+0.5j                  ← H2(jω)
C2: =IMSUB(A2, B2)            ← H1 - H2 = 0.1-0.1j
D2: =IMABS(C2)                ← |H1 - H2| ≈ 0.141</code></pre>



<p>応答差の大きさを |H1 − H2| で評価することで、2つの系がどれだけ似ているかを数値化できますね。</p>



<h2 class="wp-block-heading"><span id="toc18">IMSUB関数とIMSUM関数の違い</span></h2>



<p>複素数の足し算と引き算を扱う関数として、IMSUMとIMSUBはペアの関係にあります。引数の数や使い方に違いがあるので、整理しておきましょう。</p>



<figure class="wp-block-table"><table><thead><tr><th>項目</th><th>IMSUM</th><th>IMSUB</th></tr></thead><tbody><tr><td>機能</td><td>複素数の和</td><td>複素数の差</td></tr><tr><td>引数の数</td><td>可変長（最大255個）</td><td>2個固定</td></tr><tr><td>構文</td><td>=IMSUM(z1, z2, &#8230;, zn)</td><td>=IMSUB(z1, z2)</td></tr><tr><td>演算</td><td>z1 + z2 + &#8230; + zn</td><td>z1 − z2</td></tr><tr><td>順序の影響</td><td>なし（可換）</td><td>あり（z1 − z2 ≠ z2 − z1）</td></tr></tbody></table></figure>



<p>IMSUMが可変長で多数の複素数を一括加算できるのに対し、IMSUBは2引数固定の引き算専用です。3つ以上の複素数を引き続けたい場合は、IMSUBを入れ子にするか、IMSUMでまとめてから引く必要がありますよ。</p>



<p>例えば z1 − z2 − z3 を計算したい場合は、次のいずれかの書き方になりますね。</p>



<pre class="wp-block-code"><code>=IMSUB(IMSUB(z1, z2), z3)        ← IMSUB を入れ子
=IMSUB(z1, IMSUM(z2, z3))        ← まず z2+z3 を IMSUM、その後引く</code></pre>



<p>どちらも結果は同じです。引きたい複素数が複数あるときは、IMSUMで合算してからIMSUBで引くほうが式がスッキリしますよ。</p>



<h2 class="wp-block-heading"><span id="toc19">IMSUB関数のよくあるエラーと対処法</span></h2>



<h3 class="wp-block-heading"><span id="toc20">#NUM! エラー（複素数の形式エラー）</span></h3>



<p>複素数として認識できない文字列を渡したときに発生します。虚数単位が大文字になっていたり、i・j以外の文字を使っている場合が典型例ですよ。</p>



<pre class="wp-block-code"><code>=IMSUB(&quot;3+4I&quot;, &quot;1+2I&quot;)   → #NUM!（大文字のIは不可）
=IMSUB(&quot;3+4k&quot;, &quot;1+2k&quot;)   → #NUM!（i・j以外は不可）
=IMSUB(&quot;３+４i&quot;, &quot;１+２i&quot;) → #NUM!（全角文字は不可）</code></pre>



<p>対処法は、複素数文字列を必ず半角の「a+bi」または「a+bj」の形式にすることです。虚数単位は小文字限定なので、CapsLockがオンになっていないか確認してくださいね。</p>



<p>スペースが入っている場合（例: <code>"3 + 4i"</code>）も認識できないことがあるので、余計な空白を除いておくと安心です。</p>



<h3 class="wp-block-heading"><span id="toc21">#NUM! エラー（虚数単位の混在）</span></h3>



<p>第1引数と第2引数で虚数単位が異なるとエラーになります。</p>



<pre class="wp-block-code"><code>=IMSUB(&quot;3+4i&quot;, &quot;1+2j&quot;)   → #NUM!（i と j の混在は不可）</code></pre>



<p>対処法は、両方の引数で虚数単位を「i」または「j」のどちらかに統一することです。元データが「j」で来ている場合は、両方を「j」に揃えるか、SUBSTITUTE関数で一括置換してから渡しましょう。</p>



<h3 class="wp-block-heading"><span id="toc22">#VALUE! エラー（引数の型エラー）</span></h3>



<p>引数に複素数として解釈できない値（純粋な文字列、配列の不整合など）を渡したときに発生します。</p>



<pre class="wp-block-code"><code>=IMSUB(&quot;hello&quot;, &quot;1+2i&quot;)  → #NUM! または #VALUE!
=IMSUB(#N/A, &quot;1+2i&quot;)     → #N/A（エラー値はそのまま伝播）</code></pre>



<p>対処法は、空白セルを参照していないか、参照先のデータ形式が正しいかを確認することですね。<code>=ISTEXT(A2)</code> や <code>=LEN(A2)</code> でセルの中身をチェックしておくと安心ですよ。</p>



<h3 class="wp-block-heading"><span id="toc23">結果が想定と違う（引数の順序の取り違え）</span></h3>



<p>IMSUB関数は「複素数1 − 複素数2」の順序で計算するので、引数を逆に渡すと符号が反転します。</p>



<pre class="wp-block-code"><code>=IMSUB(&quot;3+4i&quot;, &quot;1+2i&quot;)   → 2+2i（正解）
=IMSUB(&quot;1+2i&quot;, &quot;3+4i&quot;)   → -2-2i（順序が逆）</code></pre>



<p>対処法は、どちらが「引かれる側」でどちらが「引く側」かを明確にすることです。式の意味を「z1 から z2 を引く」と覚えておくと迷わないですよ。</p>



<h3 class="wp-block-heading"><span id="toc24">IFERRORでまとめてエラーを吸収する</span></h3>



<p>入力データの信頼性が低い場合は、IFERROR関数（エラー時に代替値を返す関数）で包んでおくとシート全体の集計が止まりません。</p>



<pre class="wp-block-code"><code>=IFERROR(IMSUB(A2, B2), &quot;形式エラー&quot;)</code></pre>



<p>エラー時にメッセージを返すようにしておけば、安心して大量データに適用できますよ。</p>



<h2 class="wp-block-heading"><span id="toc25">IMSUB関数とExcelの互換性</span></h2>



<p>GoogleスプレッドシートのIMSUB関数は、ExcelのIMSUB関数と仕様が完全に一致しています。構文・引数・戻り値の形式・エラー条件まで同じですよ。</p>



<p>ExcelファイルをGoogleスプレッドシートで開いてもIMSUB関数はそのまま動作します。逆にスプレッドシートで作った数式をExcelで開いても問題ありませんね。</p>



<p>ExcelのIMSUB関数は、Excel 2007以降のすべてのバージョンで利用できます。Microsoft 365、Excel for Mac、Excel Online でも同じように使えますよ。古い環境とファイルを共有する場合でも、安心して使える関数ですね。</p>



<h2 class="wp-block-heading"><span id="toc26">複素数関連の関数一覧</span></h2>



<p>IMSUB関数と一緒に使うことが多い、複素数関連の関数をまとめました。</p>



<figure class="wp-block-table"><table><thead><tr><th>関数名</th><th>機能</th></tr></thead><tbody><tr><td><a href="https://mashukabu.com/spreadsheet-complex-function/">COMPLEX</a></td><td>実数と虚数から複素数を作成する</td></tr><tr><td><a href="https://mashukabu.com/spreadsheet-imreal-function/">IMREAL</a></td><td>複素数の実数係数を返す</td></tr><tr><td><a href="https://mashukabu.com/spreadsheet-imaginary-function/">IMAGINARY</a></td><td>複素数の虚数係数を返す</td></tr><tr><td><a href="https://mashukabu.com/spreadsheet-imabs-function/">IMABS</a></td><td>複素数の絶対値（大きさ）を返す</td></tr><tr><td><a href="https://mashukabu.com/spreadsheet-imargument-function/">IMARGUMENT</a></td><td>複素数の偏角（角度）をラジアンで返す</td></tr><tr><td><a href="https://mashukabu.com/spreadsheet-imconjugate-function/">IMCONJUGATE</a></td><td>共役複素数を返す</td></tr><tr><td>IMSUM</td><td>複素数の和（足し算）を返す</td></tr><tr><td>IMSUB</td><td>複素数の差（引き算）を返す</td></tr><tr><td>IMPRODUCT</td><td>複素数の積（掛け算）を返す</td></tr><tr><td><a href="https://mashukabu.com/spreadsheet-imdiv-function/">IMDIV</a></td><td>複素数の商（割り算）を返す</td></tr><tr><td><a href="https://mashukabu.com/spreadsheet-impower-function/">IMPOWER</a></td><td>複素数のべき乗を返す</td></tr><tr><td><a href="https://mashukabu.com/spreadsheet-imsqrt-function/">IMSQRT</a></td><td>複素数の平方根を返す</td></tr><tr><td><a href="https://mashukabu.com/spreadsheet-imexp-function/">IMEXP</a></td><td>複素数の指数関数を返す</td></tr><tr><td><a href="https://mashukabu.com/spreadsheet-imcos-function/">IMCOS</a></td><td>複素数のコサインを返す</td></tr></tbody></table></figure>



<p>IMSUB関数は、これら複素数関数群の中で「差を計算する」役割を担います。COMPLEXで作り、IMSUBで差を取り、IMABS・IMARGUMENTで大きさと位相を確認するのが基本パターンですね。</p>



<h2 class="wp-block-heading"><span id="toc27">まとめ</span></h2>



<p>GoogleスプレッドシートのIMSUB関数は、2つの複素数の差（引き算）を返す関数です。電気回路のインピーダンス差分、信号処理のフェーザ演算、制御工学の応答比較、複素平面上の距離計算など、複素数の差が必要な場面で欠かせない関数ですよ。</p>



<ul class="wp-block-list"><li>構文は <code>=IMSUB(複素数1, 複素数2)</code> で、引数は2つとも必須</li><li>演算は「複素数1 − 複素数2」で、実部・虚部それぞれを引き算する</li><li>「a+bi」と「a+bj」のどちらの表記でも動作する</li><li>第1引数と第2引数で虚数単位（i・j）を混在させると #NUM! エラー</li><li>戻り値の虚数単位は第1引数に従う</li><li>COMPLEX関数の結果やセル参照、複素数演算の結果から差を計算できる</li><li>IMABSと組み合わせれば、複素平面上の2点間の距離が出せる</li><li>ARRAYFORMULAで複数行を一括処理できる</li><li>IMSUMは可変長の和、IMSUBは2引数固定の差というペア関係</li><li>大文字の「I」「J」や全角文字、i・j以外の単位は #NUM! エラー</li><li>ExcelのIMSUB関数と完全互換（Excel 2007以降）</li></ul>



<p>複素数の引き算が必要になったら、IMSUB関数の出番ですよ。COMPLEX関数で複素数を作り、IMSUBで差を取る流れに、IMABSとIMARGUMENTで結果の大きさと位相を確認するステップを加えてみてください。エンジニアリング系のシートを軽快に組み立てられますよ。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://mashukabu.com/spreadsheet-imsub-function/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>スプレッドシートのIMTANH関数の使い方｜複素数の双曲線正接</title>
		<link>https://mashukabu.com/spreadsheet-imtanh-function/</link>
					<comments>https://mashukabu.com/spreadsheet-imtanh-function/#respond</comments>
		
		<dc:creator><![CDATA[まっしゅ]]></dc:creator>
		<pubDate>Wed, 29 Apr 2026 11:24:14 +0000</pubDate>
				<category><![CDATA[Googleスプレッドシート]]></category>
		<category><![CDATA[IMTANH関数]]></category>
		<category><![CDATA[エンジニアリング関数]]></category>
		<category><![CDATA[複素数]]></category>
		<guid isPermaLink="false">https://mashukabu.com/?p=6338</guid>

					<description><![CDATA[GoogleスプレッドシートのIMTANH関数の使い方を解説。複素数（a+bi）の双曲線正接（ハイパボリックタンジェント）を一発で求める基本構文、虚数単位i/jの扱い、COMPLEX関数やIMSINH/IMCOSH関数との連携、伝送線路の特性インピーダンスや減衰振動の解析での実務活用例、よくあるエラー対処法まで実例付きで紹介します。]]></description>
										<content:encoded><![CDATA[
<p>「スプレッドシートで複素数の双曲線正接を計算したい。でもsinh(z)とcosh(z)を別々に計算してIMDIVで割るのは面倒&#8230;」</p>



<p>スプレッドシートで複素数を扱っていると、双曲線関数の比であるtanh(z)が必要になる場面がありますよね。「sinh(a+bi) ÷ cosh(a+bi)」という手順を毎回踏むのは、ちょっと手間がかかります。</p>



<p>そんなときに頼りになるのがGoogleスプレッドシートのIMTANH関数です。複素数を渡すだけで双曲線正接の値を一発で返してくれますよ。伝送線路の特性インピーダンスや減衰応答の数式が一気にすっきりしますね。</p>



<p>ExcelのIMTANH関数と完全互換なので、Excelファイルとやり取りする現場でも安心ですね。COMPLEX関数で作った複素数や、IMSUM・IMPRODUCTの演算結果からも、そのまま双曲線正接を計算できます。</p>



<p>この記事では、スプレッドシートのIMTANH関数の基本構文と実務での活用例を解説します。定義式に基づく内部計算の仕組みや、よくあるエラーと対処法もしっかり紹介していきますよ。</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-9" checked><label class="toc-title" for="toc-checkbox-9">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">スプレッドシートのIMTANH関数とは？</a></li><li><a href="#toc2" tabindex="0">IMTANH関数の書き方（構文と引数）</a><ol><li><a href="#toc3" tabindex="0">基本構文</a></li><li><a href="#toc4" tabindex="0">引数の詳細</a></li></ol></li><li><a href="#toc5" tabindex="0">IMTANH関数の基本的な使い方</a><ol><li><a href="#toc6" tabindex="0">文字列で複素数を直接指定する</a></li><li><a href="#toc7" tabindex="0">セル参照で複素数を指定する</a></li><li><a href="#toc8" tabindex="0">COMPLEX関数と組み合わせる</a></li><li><a href="#toc9" tabindex="0">度数法で虚部の角度を渡す（RADIANS関数と組み合わせる）</a></li><li><a href="#toc10" tabindex="0">ARRAYFORMULAで複数行を一括処理する</a></li></ol></li><li><a href="#toc11" tabindex="0">IMTANH関数の実務活用例</a><ol><li><a href="#toc12" tabindex="0">活用例1: 実部と虚部に分解して可視化する</a></li><li><a href="#toc13" tabindex="0">活用例2: IMSINHとIMCOSHの比との一致を検算する</a></li><li><a href="#toc14" tabindex="0">活用例3: 伝送線路の特性インピーダンス計算</a></li><li><a href="#toc15" tabindex="0">活用例4: 飽和性質を活用した非線形変換</a></li><li><a href="#toc16" tabindex="0">活用例5: 周期性を活用した数値検証</a></li></ol></li><li><a href="#toc17" tabindex="0">IMTANH関数とCOMPLEX関数群の関係</a></li><li><a href="#toc18" tabindex="0">IMTANH関数のよくあるエラーと対処法</a><ol><li><a href="#toc19" tabindex="0">#NUM! エラー（複素数の形式エラー）</a></li><li><a href="#toc20" tabindex="0">#NUM! エラー（特異点による発散）</a></li><li><a href="#toc21" tabindex="0">#VALUE! エラー（引数の型エラー）</a></li><li><a href="#toc22" tabindex="0">実部が大きすぎてもエラーにはならない</a></li><li><a href="#toc23" tabindex="0">IFERRORでまとめてエラーを吸収する</a></li></ol></li><li><a href="#toc24" tabindex="0">IMTANH関数とExcelの互換性</a></li><li><a href="#toc25" tabindex="0">複素数関連の関数一覧</a></li><li><a href="#toc26" tabindex="0">まとめ</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">スプレッドシートのIMTANH関数とは？</span></h2>



<p>GoogleスプレッドシートのIMTANH関数は、複素数の双曲線正接（ハイパボリックタンジェント）を返す関数です。エンジニアリング関数（電気・物理・工学系の計算で使う関数群）のひとつに分類されますよ。</p>



<p>読み方は「アイエム・タンチ」または「イマジナリー・タンチ」です。関数名は「IM（Imaginary：虚数）+ TANH（Hyperbolic Tangent：双曲線正接）」に由来します。複素数「a+bi」に対して、複素数版のtanh値を返してくれるのが役割ですね。</p>



<p>そもそも複素数の双曲線正接とは、実数の双曲線関数を複素数全体に拡張したものです。定義式は次のようにシンプルですよ。</p>



<pre class="wp-block-code"><code>tanh(z) = sinh(z) / cosh(z)</code></pre>



<p>つまりIMTANH(z)はIMSINH(z)をIMCOSH(z)で割った結果と等価ですね。展開式で書くと次のような形になります。</p>



<pre class="wp-block-code"><code>tanh(a+bi) = sinh(2a) / (cosh(2a) + cos(2b))
           + i × sin(2b) / (cosh(2a) + cos(2b))</code></pre>



<figure class="wp-block-table"><table><thead><tr><th>複素数（z）</th><th>IMTANH(z)の結果（概算）</th><th>内部計算</th></tr></thead><tbody><tr><td>0+0i</td><td>0</td><td>tanh(0) = 0</td></tr><tr><td>1+0i</td><td>0.761594155955765</td><td>tanh(1) ≈ 0.7616</td></tr><tr><td>0+1i</td><td>1.5574077246549i</td><td>i × tan(1)</td></tr><tr><td>1+1i</td><td>1.0839233273386+0.27175258531952i</td><td>sinh(1+i)/cosh(1+i)</td></tr><tr><td>0+π/2i</td><td>#NUM!（特異点）</td><td>cosh(π/2 i)=0 で発散</td></tr></tbody></table></figure>



<p>IMTANH関数を使えば、この表の右側にある「複素数の双曲線正接」をサクッと取り出せます。ExcelのIMTANH関数とも仕様が一致していて、Excel 2013以降のすべてのバージョンに対応していますよ。</p>



<p>複素数の双曲線正接は、複素双曲線関数が必要な場面で活躍する基礎パーツですね。伝送線路の特性インピーダンス計算や制御工学の伝達関数で登場します。信号処理のフィルタ設計、機械学習の活性化関数の数値検証などにも使えますよ。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>TIP</strong></p><p>IMTANH関数は奇関数の性質を持っています。tanh(-z) = -tanh(z) が複素数でも成り立ちます。符号反転した複素数を渡すと、結果も符号反転して返ってきますよ。実部が大きい複素数では結果が±1に近づく「飽和性質」もあります。これがニューラルネットワークの活性化関数で使われる理由になっていますね。</p></blockquote>



<h2 class="wp-block-heading"><span id="toc2">IMTANH関数の書き方（構文と引数）</span></h2>



<h3 class="wp-block-heading"><span id="toc3">基本構文</span></h3>



<pre class="wp-block-code"><code>=IMTANH(複素数)</code></pre>



<p>引数は1つだけのシンプルな関数です。</p>



<h3 class="wp-block-heading"><span id="toc4">引数の詳細</span></h3>



<figure class="wp-block-table"><table><thead><tr><th>引数</th><th>必須/任意</th><th>説明</th></tr></thead><tbody><tr><td>複素数（inumber）</td><td>必須</td><td>双曲線正接を求めたい複素数。文字列またはセル参照で指定する</td></tr></tbody></table></figure>



<p>引数には「&#8221;1+2i&#8221;」や「&#8221;1+2j&#8221;」のような複素数文字列を直接渡せます。COMPLEX関数（実数と虚数から複素数を作成する関数）の結果や、複素数が入ったセルの参照も指定できますよ。</p>



<p>虚数単位は小文字の「i」または「j」のどちらでも受け付けます。数学では「i」、電気工学では「j」が使われる慣習ですね。IMTANH関数はどちらでも同じように動作してくれます。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>TIP</strong></p><p>戻り値は元の入力と同じ虚数単位で返されます。「1+1i」を渡せば「i」付きで、「1+1j」を渡せば「j」付きで返るので、表記の統一性も保たれますよ。</p></blockquote>



<p>引数の虚部はラジアン（弧度法）で扱われる点に注意してください。度数法（°）で角度を渡したい場合は、RADIANS関数（度をラジアンに変換する関数）で事前に変換する必要がありますね。</p>



<h2 class="wp-block-heading"><span id="toc5">IMTANH関数の基本的な使い方</span></h2>



<h3 class="wp-block-heading"><span id="toc6">文字列で複素数を直接指定する</span></h3>



<p>複素数文字列をそのまま引数に渡してみましょう。</p>



<pre class="wp-block-code"><code>=IMTANH(&quot;1+1i&quot;)</code></pre>



<p>結果は「1.0839233273386+0.27175258531952i」になります。実部・虚部それぞれが小数で返ってきますね。</p>



<p>実部だけの複素数（虚部0）を渡すと、通常の双曲線正接と同じ結果になります。</p>



<pre class="wp-block-code"><code>=IMTANH(&quot;1&quot;)
=IMTANH(&quot;1+0i&quot;)</code></pre>



<p>どちらも結果は「0.761594155955765」です。実数のtanh(1)と同じ値が返ってきますね。</p>



<p>虚部だけの純虚数（実部0）を渡すと、結果は通常のタンジェントに虚数単位を掛けた値になります。</p>



<pre class="wp-block-code"><code>=IMTANH(&quot;1i&quot;)</code></pre>



<p>結果は「1.5574077246549i」になります。これは「i × tan(1)」の値ですね。tanh(0+bi) = i × tan(b) という恒等式が裏で成り立っています。</p>



<h3 class="wp-block-heading"><span id="toc7">セル参照で複素数を指定する</span></h3>



<p>実務ではセルに入った複素数を扱う場面が多いですよね。A2に「1+2i」が入っている場合は次のように書きます。</p>



<pre class="wp-block-code"><code>=IMTANH(A2)</code></pre>



<p>結果は「1.16673625724092-0.243458201185571i」になります。セル参照を渡すだけで、入っている複素数の双曲線正接を取り出せますよ。</p>



<h3 class="wp-block-heading"><span id="toc8">COMPLEX関数と組み合わせる</span></h3>



<p><a href="https://mashukabu.com/spreadsheet-complex-function/">COMPLEX関数</a>で作った複素数の双曲線正接を、その場で計算することもできます。</p>



<pre class="wp-block-code"><code>=IMTANH(COMPLEX(1, 1))</code></pre>



<p>結果は「1.0839233273386+0.27175258531952i」になります。これは「IMTANH(&#8220;1+1i&#8221;)」と同じですね。COMPLEX(1, 1)が内部で「1+1i」を作り、IMTANH関数がその双曲線正接を返してくれます。</p>



<p>数値で実部と虚部を別々に管理しているシートで便利な書き方ですよ。</p>



<h3 class="wp-block-heading"><span id="toc9">度数法で虚部の角度を渡す（RADIANS関数と組み合わせる）</span></h3>



<p>虚部の角度を「30度」のような度数法で渡したい場合は、RADIANS関数で変換します。</p>



<pre class="wp-block-code"><code>=IMTANH(COMPLEX(0, RADIANS(30)))</code></pre>



<p>結果は「0.577350269189626i」、つまりi × tan(30°) = i/√3 ≈ 0.577i ですね。tanh(0+30°i) = i × tan(30°) と一致します。</p>



<p>実部と虚部の両方を度数法で扱いたい場合は両方をRADIANSで包みます。</p>



<pre class="wp-block-code"><code>=IMTANH(COMPLEX(RADIANS(45), RADIANS(30)))</code></pre>



<p>度数法で角度を扱う実務シートでは、RADIANSとセットで使うのが定番ですよ。</p>



<h3 class="wp-block-heading"><span id="toc10">ARRAYFORMULAで複数行を一括処理する</span></h3>



<p>複素数のリストから一気に双曲線正接の列を作りたい場面もありますよね。そんなときはARRAYFORMULA関数（数式を範囲全体に展開する関数）と組み合わせます。</p>



<pre class="wp-block-code"><code>=ARRAYFORMULA(IMTANH(A2:A10))</code></pre>



<p>A列に並んだ複素数から、対応するtanh値をB列に一発で展開できますよ。伝送線路の各位置における電流・電圧比を一括処理するときに重宝しますね。</p>



<h2 class="wp-block-heading"><span id="toc11">IMTANH関数の実務活用例</span></h2>



<h3 class="wp-block-heading"><span id="toc12">活用例1: 実部と虚部に分解して可視化する</span></h3>



<p>IMTANH関数の戻り値は複素数なので、グラフにしたいときは実部と虚部に分けて取り出します。IMREAL関数とIMAGINARY関数を組み合わせる流れですよ。</p>



<p>A列に複素数が並んでいるとしましょう。</p>



<pre class="wp-block-code"><code>B2: =IMTANH(A2)               ← 複素数の双曲線正接
C2: =IMREAL(B2)               ← 実部
D2: =IMAGINARY(B2)            ← 虚部</code></pre>



<p>C列を実部、D列を虚部としてプロットすれば、複素平面上での挙動が一目で分かりますね。実部が大きい領域で結果が±1に飽和する様子も確認できる教材として使えるパターンです。</p>



<h3 class="wp-block-heading"><span id="toc13">活用例2: IMSINHとIMCOSHの比との一致を検算する</span></h3>



<p>定義どおり tanh(z) = sinh(z)/cosh(z) が成り立ちますよね。IMSINHとIMCOSHとIMDIVを組み合わせて検算できますよ。</p>



<pre class="wp-block-code"><code>A2: 1+1i
B2: =IMTANH(A2)                          ← 直接計算
C2: =IMDIV(IMSINH(A2), IMCOSH(A2))       ← 定義式から計算</code></pre>



<p>B2とC2は同じ結果「1.0839233273386+0.27175258531952i」になりますね。複素双曲線関数の定義をスプレッドシート上で再現することで、数式の理解が深まる仕組みです。</p>



<h3 class="wp-block-heading"><span id="toc14">活用例3: 伝送線路の特性インピーダンス計算</span></h3>



<p>電気工学の伝送線路理論では、入力インピーダンスの公式に tanh(γL) という項が登場します。γは伝搬定数（複素数）、Lは線路長ですね。</p>



<p>たとえば伝搬定数γ = 0.05+0.3i、線路長L = 2の場合を考えましょう。</p>



<pre class="wp-block-code"><code>A2: =COMPLEX(0.05, 0.3)        ← 伝搬定数γ
B2: 2                          ← 線路長L
C2: =IMPRODUCT(A2, B2)         ← γ × L
D2: =IMTANH(C2)                ← tanh(γL)</code></pre>



<p>D列の値が、線路の電気的特性を表現する複素数になりますね。マイクロ波回路や同軸ケーブルの設計シートで活躍するパターンです。</p>



<h3 class="wp-block-heading"><span id="toc15">活用例4: 飽和性質を活用した非線形変換</span></h3>



<p>実部が大きい複素数を渡すと、IMTANH関数の結果は ±1 に近づく性質があります。この「飽和性質」は機械学習の活性化関数 tanh としても有名ですよね。</p>



<pre class="wp-block-code"><code>=IMTANH(COMPLEX(5, 0))    ← 実部だけ大きい複素数</code></pre>



<p>結果は「0.999909204262595」とほぼ1ですね。同様にIMTANH(COMPLEX(-5, 0))は「-0.999909204262595」と-1に近づきます。</p>



<p>数値スケーリングの非線形変換シートや、信号の正規化処理を組み立てるときに便利な性質ですよ。実部が10を超えると、ほぼ完全に1または-1に飽和します。</p>



<h3 class="wp-block-heading"><span id="toc16">活用例5: 周期性を活用した数値検証</span></h3>



<p>複素数のtanhは、虚数方向にπiの周期を持っています。tanh(z + πi) = tanh(z) という関係ですね。これを使って数式の妥当性をチェックできますよ。</p>



<pre class="wp-block-code"><code>A2: 1+0.5i
B2: =IMTANH(A2)                          ← 元の値
C2: =IMTANH(IMSUM(A2, COMPLEX(0, PI()))) ← +πi シフトした値</code></pre>



<p>B2とC2は同じ結果になりますね。tanh(z + πi) = tanh(z) という性質が裏付けられる仕組みです。複素関数論の周期性をスプレッドシート上で確認できる学習用パターンですよ。</p>



<h2 class="wp-block-heading"><span id="toc17">IMTANH関数とCOMPLEX関数群の関係</span></h2>



<p>複素数を扱う関数群の中で、IMTANH関数の位置づけを整理しておきましょう。</p>



<figure class="wp-block-table"><table><thead><tr><th>関数</th><th>入力</th><th>出力</th><th>役割</th></tr></thead><tbody><tr><td><a href="https://mashukabu.com/spreadsheet-complex-function/">COMPLEX</a></td><td>実数 a, b</td><td>複素数 a+bi</td><td>複素数を作る</td></tr><tr><td><a href="https://mashukabu.com/spreadsheet-imreal-function/">IMREAL</a></td><td>複素数 a+bi</td><td>実数 a</td><td>実部を取り出す</td></tr><tr><td><a href="https://mashukabu.com/spreadsheet-imaginary-function/">IMAGINARY</a></td><td>複素数 a+bi</td><td>実数 b</td><td>虚部を取り出す</td></tr><tr><td><a href="https://mashukabu.com/spreadsheet-imabs-function/">IMABS</a></td><td>複素数 a+bi</td><td>実数 √(a²+b²)</td><td>大きさを取り出す</td></tr><tr><td><a href="https://mashukabu.com/spreadsheet-imargument-function/">IMARGUMENT</a></td><td>複素数 a+bi</td><td>実数 atan2(b,a)</td><td>偏角を取り出す</td></tr><tr><td><a href="https://mashukabu.com/spreadsheet-imconjugate-function/">IMCONJUGATE</a></td><td>複素数 a+bi</td><td>複素数 a-bi</td><td>共役を作る</td></tr><tr><td><a href="https://mashukabu.com/spreadsheet-imsinh-function/">IMSINH</a></td><td>複素数 z</td><td>複素数 sinh(z)</td><td>双曲線正弦を計算する</td></tr><tr><td><a href="https://mashukabu.com/spreadsheet-imcosh-function/">IMCOSH</a></td><td>複素数 z</td><td>複素数 cosh(z)</td><td>双曲線余弦を計算する</td></tr><tr><td>IMTANH</td><td>複素数 z</td><td>複素数 tanh(z)</td><td>双曲線正接を計算する</td></tr><tr><td><a href="https://mashukabu.com/spreadsheet-imtan-function/">IMTAN</a></td><td>複素数 z</td><td>複素数 tan(z)</td><td>タンジェントを計算する</td></tr></tbody></table></figure>



<p>IMREALやIMABSは「複素数から実数を取り出す」関数ですね。一方IMTANH関数は「複素数から複素数を計算する」役割です。出力もそのまま複素数なので、IMSUMやIMPRODUCTにそのまま渡してさらに計算を続けられますよ。</p>



<p>たとえば定義式どおりにtanh(a+bi)を手動で組み立てると次のようになります。</p>



<pre class="wp-block-code"><code>=IMDIV(IMSINH(A2), IMCOSH(A2))</code></pre>



<p>これはIMTANHと同じ結果になりますが、IMSINHとIMCOSHとIMDIVの3つを組み合わせる必要がありますよね。IMTANHを使えば1関数で済むので、数式が読みやすくなります。</p>



<h2 class="wp-block-heading"><span id="toc18">IMTANH関数のよくあるエラーと対処法</span></h2>



<h3 class="wp-block-heading"><span id="toc19">#NUM! エラー（複素数の形式エラー）</span></h3>



<p>複素数として認識できない文字列を渡したときに発生します。虚数単位が大文字になっていたり、i・j以外の文字を使っている場合が典型例ですよ。</p>



<pre class="wp-block-code"><code>=IMTANH(&quot;1+1I&quot;)   → #NUM!（大文字のIは不可）
=IMTANH(&quot;1+1k&quot;)   → #NUM!（i・j以外は不可）
=IMTANH(&quot;１+１i&quot;) → #NUM!（全角文字は不可）</code></pre>



<p>対処法は、複素数文字列を必ず半角の「a+bi」または「a+bj」の形式にすることです。虚数単位は小文字限定なので、CapsLockがオンになっていないか確認してくださいね。</p>



<p>スペースが入っている場合（例: <code>"1 + 1i"</code>）も認識できないことがあるので、余計な空白を除いておくと安心です。</p>



<h3 class="wp-block-heading"><span id="toc20">#NUM! エラー（特異点による発散）</span></h3>



<p>cosh(z)が0になる点では、tanh(z)は発散して定義できません。z = π/2 i, 3π/2 i, 5π/2 i&#8230; のように実部が0で虚部がπ/2の奇数倍の場合に起こりますよ。</p>



<pre class="wp-block-code"><code>=IMTANH(COMPLEX(0, PI()/2))   → #NUM!（cosh(π/2 i) = 0 で発散）</code></pre>



<p>対処法は、入力値が特異点に近づかないようチェックすることです。物理的な意味のある範囲に制限する、特異点近傍ではIFERRORで代替値を返すなどの工夫が必要ですね。</p>



<p>なお原点0+0iでは、IMTANHは「0」を返します。tanh(0) = 0 となるためで、特異点ではありません。</p>



<h3 class="wp-block-heading"><span id="toc21">#VALUE! エラー（引数の型エラー）</span></h3>



<p>引数に論理値やエラー値を渡したときに発生します。</p>



<pre class="wp-block-code"><code>=IMTANH(TRUE)    → #VALUE!（論理値は不可）
=IMTANH(#N/A)    → #VALUE!（エラー値は不可）</code></pre>



<p>対処法は、正しい複素数文字列または数値・セル参照を渡すことです。入力元のセルがエラーになっている場合は、そのエラーを先に解消する必要がありますよ。</p>



<h3 class="wp-block-heading"><span id="toc22">実部が大きすぎてもエラーにはならない</span></h3>



<p>実部が極端に大きい場合でも、IMTANH関数の結果は ±1 に飽和するだけでエラーにはなりません。</p>



<pre class="wp-block-code"><code>=IMTANH(&quot;100+0i&quot;)   → 1（実質的に1）
=IMTANH(&quot;-100+0i&quot;)  → -1（実質的に-1）</code></pre>



<p>これは実数のtanhと同じ振る舞いですね。IMSINHやIMCOSHは大きな実部でオーバーフローします。一方IMTANHは比を取るため、大きな実部でも安定して結果が返りますよ。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>TIP</strong></p><p>機械学習の活性化関数として tanh が使われる理由のひとつが、この「常に [-1, 1] の範囲に収まる」性質ですよ。スプレッドシート上で活性化関数のシミュレーションをするときも、IMTANH関数（または実数版のTANH関数）が活躍します。</p></blockquote>



<h3 class="wp-block-heading"><span id="toc23">IFERRORでまとめてエラーを吸収する</span></h3>



<p>入力データの信頼性が低い場合は、IFERROR関数で包んでおくと安心です。エラー時に代替値を返す関数で、シート全体の集計が止まりません。</p>



<pre class="wp-block-code"><code>=IFERROR(IMTANH(A2), &quot;形式エラーまたは特異点&quot;)</code></pre>



<p>エラー時にメッセージを返すようにしておけば、安心して大量データに適用できますよ。特異点近傍を扱うシートでは特に重要ですね。</p>



<h2 class="wp-block-heading"><span id="toc24">IMTANH関数とExcelの互換性</span></h2>



<p>GoogleスプレッドシートのIMTANH関数は、ExcelのIMTANH関数と仕様が完全に一致しています。構文・引数・戻り値の形式・エラー条件まで同じですよ。</p>



<p>ExcelファイルをGoogleスプレッドシートで開いてもIMTANH関数はそのまま動作します。逆にスプレッドシートで作った数式をExcelで開いても問題ありませんね。</p>



<p>ExcelのIMTANH関数は、Excel 2013以降のバージョンで追加されました。Microsoft 365、Excel for Mac、Excel Online でも同じように使えますよ。Excel 2010以前のバージョンでは利用できないので、古い環境とファイルを共有する場合は注意してくださいね。</p>



<p>Excel 2010以前で同じ計算をしたい場合は、IMSINH・IMCOSH・IMDIVの組み合わせで代替できますよ。具体的には <code>=IMDIV(IMSINH(A2), IMCOSH(A2))</code> のように書きますね。</p>



<h2 class="wp-block-heading"><span id="toc25">複素数関連の関数一覧</span></h2>



<p>IMTANH関数と一緒に使うことが多い、複素数関連の関数をまとめました。</p>



<figure class="wp-block-table"><table><thead><tr><th>関数名</th><th>機能</th></tr></thead><tbody><tr><td><a href="https://mashukabu.com/spreadsheet-complex-function/">COMPLEX</a></td><td>実数と虚数から複素数を作成する</td></tr><tr><td><a href="https://mashukabu.com/spreadsheet-imreal-function/">IMREAL</a></td><td>複素数の実数係数を返す</td></tr><tr><td><a href="https://mashukabu.com/spreadsheet-imaginary-function/">IMAGINARY</a></td><td>複素数の虚数係数を返す</td></tr><tr><td><a href="https://mashukabu.com/spreadsheet-imabs-function/">IMABS</a></td><td>複素数の絶対値（大きさ）を返す</td></tr><tr><td><a href="https://mashukabu.com/spreadsheet-imargument-function/">IMARGUMENT</a></td><td>複素数の偏角（角度）をラジアンで返す</td></tr><tr><td><a href="https://mashukabu.com/spreadsheet-imconjugate-function/">IMCONJUGATE</a></td><td>共役複素数を返す</td></tr><tr><td><a href="https://mashukabu.com/spreadsheet-imsinh-function/">IMSINH</a></td><td>複素数の双曲線正弦を返す</td></tr><tr><td><a href="https://mashukabu.com/spreadsheet-imcosh-function/">IMCOSH</a></td><td>複素数の双曲線余弦を返す</td></tr><tr><td>IMTANH</td><td>複素数の双曲線正接を返す</td></tr><tr><td><a href="https://mashukabu.com/spreadsheet-imtan-function/">IMTAN</a></td><td>複素数のタンジェントを返す</td></tr><tr><td><a href="https://mashukabu.com/spreadsheet-imsin-function/">IMSIN</a></td><td>複素数のサインを返す</td></tr><tr><td><a href="https://mashukabu.com/spreadsheet-imcos-function/">IMCOS</a></td><td>複素数のコサインを返す</td></tr><tr><td><a href="https://mashukabu.com/spreadsheet-imcot-function/">IMCOT</a></td><td>複素数のコタンジェントを返す</td></tr><tr><td><a href="https://mashukabu.com/spreadsheet-imsec-function/">IMSEC</a></td><td>複素数のセカントを返す</td></tr><tr><td><a href="https://mashukabu.com/spreadsheet-imsum-function/">IMSUM</a></td><td>複素数の合計（足し算）を返す</td></tr><tr><td><a href="https://mashukabu.com/spreadsheet-imsub-function/">IMSUB</a></td><td>複素数の差（引き算）を返す</td></tr><tr><td>IMPRODUCT</td><td>複素数の積（掛け算）を返す</td></tr><tr><td>IMDIV</td><td>複素数の商（割り算）を返す</td></tr><tr><td>IMEXP</td><td>複素数の指数関数を返す</td></tr><tr><td><a href="https://mashukabu.com/spreadsheet-imln-function/">IMLN</a></td><td>複素数の自然対数を返す</td></tr><tr><td><a href="https://mashukabu.com/spreadsheet-imsqrt-function/">IMSQRT</a></td><td>複素数の平方根を返す</td></tr></tbody></table></figure>



<p>IMTANH関数は、これら複素数関数群の中で「双曲線正接を計算する」役割を担います。COMPLEXで複素数を作り、IMTANHで双曲線正接を取ります。最後にIMREAL・IMAGINARYで実部と虚部に分けるのが基本パターンですよ。</p>



<h2 class="wp-block-heading"><span id="toc26">まとめ</span></h2>



<p>GoogleスプレッドシートのIMTANH関数は、複素数の双曲線正接（ハイパボリックタンジェント）を返す関数です。伝送線路の特性インピーダンスや制御工学の伝達関数で活躍しますね。機械学習の活性化関数の数値検証など、複素双曲線関数が必要な場面で欠かせない関数ですよ。</p>



<ul class="wp-block-list"><li>構文は <code>=IMTANH(複素数)</code> で引数は1つだけのシンプルな関数</li><li>「a+bi」を渡すと「sinh(a+bi) / cosh(a+bi)」が返る</li><li>「a+bj」のような工学系表記もそのまま受け付ける</li><li>引数の虚部はラジアンで扱う（度数法ならRADIANS関数で変換）</li><li>虚部0の実数を渡すと、実数のtanhと同じ値になる</li><li>実部0の純虚数を渡すと、「i × tan(b)」の値が返る</li><li>COMPLEX関数の結果やセル参照、複素数演算の結果から双曲線正接を計算できる</li><li>IMSINH÷IMCOSHの比と等価</li><li>ARRAYFORMULAで複数の複素数を一括処理できる</li><li>実部が大きい複素数では結果が ±1 に飽和する（活性化関数 tanh と同じ性質）</li><li>虚数方向にπiの周期を持つ</li><li>z = 0 + (π/2 + nπ)i のような特異点では #NUM! エラー（cosh(z)=0で発散）</li><li>大文字の「I」「J」や全角文字、i・j以外の単位は #NUM! エラー</li><li>論理値やエラー値を渡すと #VALUE! エラー</li><li>ExcelのIMTANH関数と完全互換（Excel 2013以降）</li></ul>



<p>複素数の双曲線正接が必要になったら、IMTANH関数の出番ですよ。COMPLEX関数で複素数を作り、IMTANHで双曲線正接を取ります。最後にIMREAL・IMAGINARYで成分を分解する流れですね。この組み合わせで、エンジニアリング系のシートを軽快に組み立ててみてくださいね。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://mashukabu.com/spreadsheet-imtanh-function/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>スプレッドシートのIMTAN関数の使い方｜複素数の正接</title>
		<link>https://mashukabu.com/spreadsheet-imtan-function/</link>
					<comments>https://mashukabu.com/spreadsheet-imtan-function/#respond</comments>
		
		<dc:creator><![CDATA[まっしゅ]]></dc:creator>
		<pubDate>Wed, 29 Apr 2026 11:24:12 +0000</pubDate>
				<category><![CDATA[Googleスプレッドシート]]></category>
		<category><![CDATA[IMTAN関数]]></category>
		<category><![CDATA[エンジニアリング関数]]></category>
		<category><![CDATA[複素数]]></category>
		<guid isPermaLink="false">https://mashukabu.com/?p=6336</guid>

					<description><![CDATA[GoogleスプレッドシートのIMTAN関数の使い方を解説。複素数（a+bi）のタンジェント（正接）を一発で求める基本構文、虚数単位i/jの扱い、COMPLEX関数やIMCOT関数との連携、sin/cos比による定義、信号処理や交流回路解析での実務活用例、よくあるエラー対処法まで実例付きで紹介します。]]></description>
										<content:encoded><![CDATA[
<p>「スプレッドシートで複素数のタンジェントを計算したいけど、sin(z)とcos(z)に分けて自分で割り算するのは面倒&#8230;」</p>



<p>スプレッドシートで複素数の三角関数を扱っていると、タンジェント（正接）が必要になる場面がありますよね。sin(z)とcos(z)を別々に計算して、IMDIVで割って&#8230;という手順を毎回踏むのはちょっと大変です。</p>



<p>そんなときに頼りになるのがGoogleスプレッドシートのIMTAN関数です。複素数を渡すだけでタンジェントの値を一発で返してくれるので、交流回路の位相計算や制御工学の伝達関数の数式が一気にすっきりしますよ。</p>



<p>ExcelのIMTAN関数と完全互換なので、Excelファイルとやり取りする現場でも安心ですね。COMPLEX関数で作った複素数や、IMSUM・IMPRODUCTの演算結果からも、そのままタンジェントを計算できます。</p>



<p>この記事では、スプレッドシートのIMTAN関数の基本構文と実務での活用例を解説します。sin/cos比に基づく内部計算の仕組みや、よくあるエラーと対処法もしっかり紹介していきますよ。</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-10" checked><label class="toc-title" for="toc-checkbox-10">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">スプレッドシートのIMTAN関数とは？</a></li><li><a href="#toc2" tabindex="0">IMTAN関数の書き方（構文と引数）</a><ol><li><a href="#toc3" tabindex="0">基本構文</a></li><li><a href="#toc4" tabindex="0">引数の詳細</a></li></ol></li><li><a href="#toc5" tabindex="0">IMTAN関数の基本的な使い方</a><ol><li><a href="#toc6" tabindex="0">文字列で複素数を直接指定する</a></li><li><a href="#toc7" tabindex="0">セル参照で複素数を指定する</a></li><li><a href="#toc8" tabindex="0">COMPLEX関数と組み合わせる</a></li><li><a href="#toc9" tabindex="0">度数法で角度を渡す（RADIANS関数と組み合わせる）</a></li><li><a href="#toc10" tabindex="0">ARRAYFORMULAで複数行を一括処理する</a></li></ol></li><li><a href="#toc11" tabindex="0">IMTAN関数の実務活用例</a><ol><li><a href="#toc12" tabindex="0">活用例1: 実部と虚部に分解して可視化する</a></li><li><a href="#toc13" tabindex="0">活用例2: IMCOT関数の逆数との一致を検算する</a></li><li><a href="#toc14" tabindex="0">活用例3: 交流回路の位相比を計算する</a></li><li><a href="#toc15" tabindex="0">活用例4: IMSINとIMCOSの比との一致を確認する</a></li><li><a href="#toc16" tabindex="0">活用例5: フーリエ級数の係数計算</a></li></ol></li><li><a href="#toc17" tabindex="0">IMTAN関数とCOMPLEX関数群の関係</a></li><li><a href="#toc18" tabindex="0">IMTAN関数のよくあるエラーと対処法</a><ol><li><a href="#toc19" tabindex="0">#NUM! エラー（複素数の形式エラー）</a></li><li><a href="#toc20" tabindex="0">#NUM! エラー（特異点による発散）</a></li><li><a href="#toc21" tabindex="0">#VALUE! エラー（引数の型エラー）</a></li><li><a href="#toc22" tabindex="0">虚部が大きすぎてオーバーフロー</a></li><li><a href="#toc23" tabindex="0">IFERRORでまとめてエラーを吸収する</a></li></ol></li><li><a href="#toc24" tabindex="0">IMTAN関数とExcelの互換性</a></li><li><a href="#toc25" tabindex="0">複素数関連の関数一覧</a></li><li><a href="#toc26" tabindex="0">まとめ</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">スプレッドシートのIMTAN関数とは？</span></h2>



<p>GoogleスプレッドシートのIMTAN関数（イマジナリー・タンジェント関数）は、複素数のタンジェント（正接）を返す関数です。エンジニアリング関数（電気・物理・工学系の計算で使う関数群）のひとつに分類されますよ。</p>



<p>読み方は「アイエムタン」または「アイエム・タンジェント」です。関数名は「IM（Imaginary：虚数）+ TAN（Tangent：正接）」に由来します。複素数「a+bi」に対して、複素数版のタンジェント値を返してくれるのが役割ですね。</p>



<p>そもそも複素数のタンジェントとは、実数の三角関数を複素数全体に拡張したものです。定義式は次のようにシンプルですよ。</p>



<pre class="wp-block-code"><code>tan(z) = sin(z) / cos(z) = 1 / cot(z)</code></pre>



<p>つまりIMTAN(z)はIMSIN(z)をIMCOS(z)で割った結果と等価ですね。IMCOT(z)の逆数とも言い換えられます。</p>



<figure class="wp-block-table"><table><thead><tr><th>複素数（z）</th><th>IMTAN(z)の結果（概算）</th><th>内部計算</th></tr></thead><tbody><tr><td>0+0i</td><td>0</td><td>sin(0)/cos(0) = 0/1</td></tr><tr><td>1+0i</td><td>1.5574077246549</td><td>sin(1)/cos(1)</td></tr><tr><td>0+1i</td><td>0.761594155955765i</td><td>i × tanh(1)</td></tr><tr><td>1+1i</td><td>0.271752585319512+1.08392332733869i</td><td>sin(1+i)/cos(1+i)</td></tr><tr><td>π/2+0i</td><td>#NUM!（特異点）</td><td>cos(π/2) = 0 で発散</td></tr></tbody></table></figure>



<p>IMTAN関数を使えば、この表の右側にある「複素数のタンジェント」をサクッと取り出せます。ExcelのIMTAN関数とも仕様が一致していて、Excel 2013以降のすべてのバージョンに対応していますよ。</p>



<p>複素数のタンジェントは、複素数三角関数が必要な場面で活躍する基礎パーツですね。交流回路の位相比、制御工学の伝達関数のボード線図、フーリエ級数の係数計算、量子力学の散乱問題などで登場します。</p>



<h2 class="wp-block-heading"><span id="toc2">IMTAN関数の書き方（構文と引数）</span></h2>



<h3 class="wp-block-heading"><span id="toc3">基本構文</span></h3>



<pre class="wp-block-code"><code>=IMTAN(複素数)</code></pre>



<p>引数は1つだけのシンプルな関数です。</p>



<h3 class="wp-block-heading"><span id="toc4">引数の詳細</span></h3>



<figure class="wp-block-table"><table><thead><tr><th>引数</th><th>必須/任意</th><th>説明</th></tr></thead><tbody><tr><td>複素数（inumber）</td><td>必須</td><td>タンジェントを求めたい複素数。文字列またはセル参照で指定する</td></tr></tbody></table></figure>



<p>引数には「&#8221;1+2i&#8221;」や「&#8221;1+2j&#8221;」のような複素数文字列を直接渡せます。COMPLEX関数（実数と虚数から複素数を作成する関数）の結果や、複素数が入ったセルの参照も指定できますよ。</p>



<p>虚数単位は小文字の「i」または「j」のどちらでも受け付けます。数学では「i」、電気工学では「j」が使われる慣習ですね。IMTAN関数はどちらでも同じように動作してくれます。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>TIP</strong></p><p>戻り値は元の入力と同じ虚数単位で返されます。「1+1i」を渡せば「i」付きで、「1+1j」を渡せば「j」付きで返るので、表記の統一性も保たれますよ。</p></blockquote>



<p>引数の実部・虚部はラジアン（弧度法）で扱われる点に注意してください。度数法（°）で角度を渡したい場合は、RADIANS関数（度をラジアンに変換する関数）で事前に変換する必要がありますね。</p>



<h2 class="wp-block-heading"><span id="toc5">IMTAN関数の基本的な使い方</span></h2>



<h3 class="wp-block-heading"><span id="toc6">文字列で複素数を直接指定する</span></h3>



<p>複素数文字列をそのまま引数に渡してみましょう。</p>



<pre class="wp-block-code"><code>=IMTAN(&quot;1+1i&quot;)</code></pre>



<p>結果は「0.271752585319512+1.08392332733869i」になります。実部・虚部それぞれが小数で返ってきますね。</p>



<p>実部だけの複素数（虚部0）を渡すと、通常のタンジェントと同じ結果になります。</p>



<pre class="wp-block-code"><code>=IMTAN(&quot;1&quot;)
=IMTAN(&quot;1+0i&quot;)</code></pre>



<p>どちらも結果は「1.5574077246549」です。sin(1)/cos(1)の値が返ってきますね。</p>



<p>虚部だけの純虚数（実部0）を渡すと、結果は双曲線正接（ハイパボリックタンジェント）に虚数単位を掛けた値になります。</p>



<pre class="wp-block-code"><code>=IMTAN(&quot;1i&quot;)</code></pre>



<p>結果は「0.761594155955765i」になります。これは「i × tanh(1)」の値ですね。tan(0+1i) = i × tanh(1) という恒等式が裏で成り立っています。</p>



<h3 class="wp-block-heading"><span id="toc7">セル参照で複素数を指定する</span></h3>



<p>実務ではセルに入った複素数を扱う場面が多いですよね。A2に「1+2i」が入っている場合は次のように書きます。</p>



<pre class="wp-block-code"><code>=IMTAN(A2)</code></pre>



<p>結果は「0.0338128260798966+1.01479361614663i」になります。セル参照を渡すだけで、入っている複素数のタンジェントを取り出せますよ。</p>



<h3 class="wp-block-heading"><span id="toc8">COMPLEX関数と組み合わせる</span></h3>



<p><a href="https://mashukabu.com/spreadsheet-complex-function/">COMPLEX関数</a>で作った複素数のタンジェントを、その場で計算することもできます。</p>



<pre class="wp-block-code"><code>=IMTAN(COMPLEX(1, 1))</code></pre>



<p>結果は「0.271752585319512+1.08392332733869i」、つまり「IMTAN(&#8220;1+1i&#8221;)」と同じですね。COMPLEX(1, 1)が内部で「1+1i」を作り、IMTAN関数がそのタンジェントを返してくれます。</p>



<p>数値で実部と虚部を別々に管理しているシートで便利な書き方ですよ。</p>



<h3 class="wp-block-heading"><span id="toc9">度数法で角度を渡す（RADIANS関数と組み合わせる）</span></h3>



<p>実部を「30度」のような度数法で渡したい場合は、RADIANS関数で変換します。</p>



<pre class="wp-block-code"><code>=IMTAN(COMPLEX(RADIANS(30), 0))</code></pre>



<p>結果は「0.577350269189626」、つまりtan(30°) = 1/√3 ≈ 0.577 ですね。実数のタンジェントと同じ値が返ってきます。</p>



<p>虚部にも度数法を使いたい場合は両方をRADIANSで包みます。</p>



<pre class="wp-block-code"><code>=IMTAN(COMPLEX(RADIANS(30), RADIANS(45)))</code></pre>



<p>度数法で角度を扱う実務シートでは、RADIANSとセットで使うのが定番ですよ。</p>



<h3 class="wp-block-heading"><span id="toc10">ARRAYFORMULAで複数行を一括処理する</span></h3>



<p>複素数のリストから一気にタンジェントの列を作りたい場面もありますよね。そんなときはARRAYFORMULA関数（数式を範囲全体に展開する関数）と組み合わせます。</p>



<pre class="wp-block-code"><code>=ARRAYFORMULA(IMTAN(A2:A10))</code></pre>



<p>A列に並んだ複素数から、対応するタンジェント値をB列に一発で展開できますよ。フーリエ級数の各次数を一括処理するときに重宝しますね。</p>



<h2 class="wp-block-heading"><span id="toc11">IMTAN関数の実務活用例</span></h2>



<h3 class="wp-block-heading"><span id="toc12">活用例1: 実部と虚部に分解して可視化する</span></h3>



<p>IMTAN関数の戻り値は複素数なので、グラフにしたいときは実部と虚部に分けて取り出します。IMREAL関数とIMAGINARY関数を組み合わせる流れですよ。</p>



<p>A列に複素数が並んでいるとしましょう。</p>



<pre class="wp-block-code"><code>B2: =IMTAN(A2)                ← 複素数のタンジェント
C2: =IMREAL(B2)               ← 実部
D2: =IMAGINARY(B2)            ← 虚部</code></pre>



<p>C列を実部、D列を虚部としてプロットすれば、複素平面上での挙動が一目で分かりますね。複素関数の特異点（cos(z)=0の点）付近で発散する様子も確認できる教材として使えるパターンです。</p>



<h3 class="wp-block-heading"><span id="toc13">活用例2: IMCOT関数の逆数との一致を検算する</span></h3>



<p>tan(z) = 1/cot(z) という関係が成り立つので、IMTAN関数とIMDIVの組み合わせで検算できます。</p>



<p>セルA2に複素数「1+1i」が入っているとします。</p>



<pre class="wp-block-code"><code>=IMTAN(A2)
=IMDIV(&quot;1&quot;, IMCOT(A2))</code></pre>



<p>両者は同じ結果「0.271752585319512+1.08392332733869i」になりますよ。複素関数論の基本恒等式を、スプレッドシート上で確認できる仕組みですね。教育用の教材や、実装の妥当性チェックに使える場面です。</p>



<h3 class="wp-block-heading"><span id="toc14">活用例3: 交流回路の位相比を計算する</span></h3>



<p>交流回路で電圧と電流の位相差を扱う場面では、複素数のタンジェントが顔を出しますよ。たとえばRLC回路のインピーダンスでは、位相角が「tan⁻¹((ωL &#8211; 1/ωC)/R)」のような形で表現されます。逆方向の解析として、複素数tan(z)で位相比を組み立てる場面もありますね。</p>



<p>実部0.5（抵抗成分）、虚部0.3（リアクタンス成分）の場合を考えましょう。</p>



<pre class="wp-block-code"><code>A2: 0.5         ← 実部（抵抗成分）
B2: 0.3         ← 虚部（リアクタンス成分）
C2: =IMTAN(COMPLEX(A2, B2))    ← 複素数のタンジェント
D2: =IMREAL(C2)                ← 実部の比
E2: =IMAGINARY(C2)             ← 虚部の比</code></pre>



<p>C列の値が、その条件での位相比に対応しますね。RLC回路の解析シートや、ボード線図の検討シートで活躍するパターンです。</p>



<h3 class="wp-block-heading"><span id="toc15">活用例4: IMSINとIMCOSの比との一致を確認する</span></h3>



<p>定義どおり tan(z) = sin(z)/cos(z) が成り立つので、IMSINとIMCOSとIMDIVを組み合わせて検算できますよ。</p>



<pre class="wp-block-code"><code>A2: 1+1i
B2: =IMTAN(A2)                       ← 直接計算
C2: =IMDIV(IMSIN(A2), IMCOS(A2))     ← 定義式から計算</code></pre>



<p>B2とC2は同じ結果「0.271752585319512+1.08392332733869i」になりますね。複素数三角関数の定義をスプレッドシート上で再現することで、数式の理解が深まる仕組みです。</p>



<h3 class="wp-block-heading"><span id="toc16">活用例5: フーリエ級数の係数計算</span></h3>



<p>フーリエ級数の係数公式の中には、tan(nπx/L) のような項が現れる場合があります。IMTAN関数を使えば、減衰を含む複素数版の級数も組み立てられますよ。</p>



<p>次数n=1〜5、引数α=0.3+0.1iの場合を考えましょう。</p>



<pre class="wp-block-code"><code>A2:A6 に n = 1, 2, 3, 4, 5 を入れる
B2: =IMTAN(IMPRODUCT(A2, COMPLEX(0.3, 0.1)))
B3〜B6 にコピー</code></pre>



<p>各次数のタンジェント項が一気に並びますね。フーリエ展開の数値検証や、信号処理の教材で使える書き方ですよ。</p>



<h2 class="wp-block-heading"><span id="toc17">IMTAN関数とCOMPLEX関数群の関係</span></h2>



<p>複素数を扱う関数群の中で、IMTAN関数の位置づけを整理しておきましょう。</p>



<figure class="wp-block-table"><table><thead><tr><th>関数</th><th>入力</th><th>出力</th><th>役割</th></tr></thead><tbody><tr><td><a href="https://mashukabu.com/spreadsheet-complex-function/">COMPLEX</a></td><td>実数 a, b</td><td>複素数 a+bi</td><td>複素数を作る</td></tr><tr><td><a href="https://mashukabu.com/spreadsheet-imreal-function/">IMREAL</a></td><td>複素数 a+bi</td><td>実数 a</td><td>実部を取り出す</td></tr><tr><td><a href="https://mashukabu.com/spreadsheet-imaginary-function/">IMAGINARY</a></td><td>複素数 a+bi</td><td>実数 b</td><td>虚部を取り出す</td></tr><tr><td><a href="https://mashukabu.com/spreadsheet-imabs-function/">IMABS</a></td><td>複素数 a+bi</td><td>実数 √(a²+b²)</td><td>大きさを取り出す</td></tr><tr><td><a href="https://mashukabu.com/spreadsheet-imargument-function/">IMARGUMENT</a></td><td>複素数 a+bi</td><td>実数 atan2(b,a)</td><td>偏角を取り出す</td></tr><tr><td><a href="https://mashukabu.com/spreadsheet-imconjugate-function/">IMCONJUGATE</a></td><td>複素数 a+bi</td><td>複素数 a-bi</td><td>共役を作る</td></tr><tr><td><a href="https://mashukabu.com/spreadsheet-imsin-function/">IMSIN</a></td><td>複素数 z</td><td>複素数 sin(z)</td><td>サインを計算する</td></tr><tr><td><a href="https://mashukabu.com/spreadsheet-imcos-function/">IMCOS</a></td><td>複素数 z</td><td>複素数 cos(z)</td><td>コサインを計算する</td></tr><tr><td>IMTAN</td><td>複素数 z</td><td>複素数 tan(z)</td><td>タンジェントを計算する</td></tr><tr><td><a href="https://mashukabu.com/spreadsheet-imcot-function/">IMCOT</a></td><td>複素数 z</td><td>複素数 cot(z)</td><td>コタンジェントを計算する</td></tr></tbody></table></figure>



<p>IMREALやIMABSが「複素数から実数を取り出す」のに対して、IMTAN関数は「複素数から複素数を計算する」役割です。出力もそのまま複素数なので、IMSUMやIMPRODUCTにそのまま渡してさらに計算を続けられますよ。</p>



<p>たとえば定義式どおりにtan(a+bi)を手動で組み立てると次のようになります。</p>



<pre class="wp-block-code"><code>=IMDIV(IMSIN(A2), IMCOS(A2))</code></pre>



<p>これはIMTANと同じ結果になりますが、IMSINとIMCOSとIMDIVの3つを組み合わせる必要がありますよね。IMTANを使えば1関数で済むので、数式が読みやすくなります。</p>



<h2 class="wp-block-heading"><span id="toc18">IMTAN関数のよくあるエラーと対処法</span></h2>



<h3 class="wp-block-heading"><span id="toc19">#NUM! エラー（複素数の形式エラー）</span></h3>



<p>複素数として認識できない文字列を渡したときに発生します。虚数単位が大文字になっていたり、i・j以外の文字を使っている場合が典型例ですよ。</p>



<pre class="wp-block-code"><code>=IMTAN(&quot;1+1I&quot;)   → #NUM!（大文字のIは不可）
=IMTAN(&quot;1+1k&quot;)   → #NUM!（i・j以外は不可）
=IMTAN(&quot;１+１i&quot;) → #NUM!（全角文字は不可）</code></pre>



<p>対処法は、複素数文字列を必ず半角の「a+bi」または「a+bj」の形式にすることです。虚数単位は小文字限定なので、CapsLockがオンになっていないか確認してくださいね。</p>



<p>スペースが入っている場合（例: <code>"1 + 1i"</code>）も認識できないことがあるので、余計な空白を除いておくと安心です。</p>



<h3 class="wp-block-heading"><span id="toc20">#NUM! エラー（特異点による発散）</span></h3>



<p>cos(z)が0になる点では、tan(z)は発散して定義できません。z = π/2, 3π/2, 5π/2&#8230; のように実部がπ/2の奇数倍で虚部が0の場合に起こりますよ。</p>



<pre class="wp-block-code"><code>=IMTAN(COMPLEX(PI()/2, 0))   → #NUM!（cos(π/2) = 0 で発散）</code></pre>



<p>対処法は、入力値が特異点に近づかないようチェックすることです。物理的な意味のある範囲に制限する、特異点近傍ではIFERRORで代替値を返すなどの工夫が必要ですね。</p>



<p>なお実部が0+0i（原点）では、IMTANは「0」を返します。sin(0)/cos(0) = 0/1 = 0 となるためで、特異点ではありません。</p>



<h3 class="wp-block-heading"><span id="toc21">#VALUE! エラー（引数の型エラー）</span></h3>



<p>引数に論理値やエラー値を渡したときに発生します。</p>



<pre class="wp-block-code"><code>=IMTAN(TRUE)    → #VALUE!（論理値は不可）
=IMTAN(#N/A)    → #VALUE!（エラー値は不可）</code></pre>



<p>対処法は、正しい複素数文字列または数値・セル参照を渡すことです。入力元のセルがエラーになっている場合は、そのエラーを先に解消する必要がありますよ。</p>



<h3 class="wp-block-heading"><span id="toc22">虚部が大きすぎてオーバーフロー</span></h3>



<p>虚部が極端に大きい複素数を渡すと、内部のcosh/sinh計算が指数関数的に大きくなって、計算結果がオーバーフローすることがあります。</p>



<pre class="wp-block-code"><code>=IMTAN(&quot;0+1000i&quot;)   → #NUM!（cosh(1000)が大きすぎる）</code></pre>



<p>対処法は、虚部の値を物理的に意味のある範囲に制限することです。減衰計算なら時定数の数倍程度に抑える、といった調整が必要ですね。</p>



<p>ただし虚部が大きい純虚数の場合は、tan(bi) = i × tanh(b) で b が大きいと tanh(b) は1に近づきます。そのため <code>=IMTAN("0+50i")</code> 程度なら「1i」に近い安定した値が返りますよ。</p>



<h3 class="wp-block-heading"><span id="toc23">IFERRORでまとめてエラーを吸収する</span></h3>



<p>入力データの信頼性が低い場合は、IFERROR関数（エラー時に代替値を返す関数）で包んでおくとシート全体の集計が止まりません。</p>



<pre class="wp-block-code"><code>=IFERROR(IMTAN(A2), &quot;形式エラーまたは特異点&quot;)</code></pre>



<p>エラー時にメッセージを返すようにしておけば、安心して大量データに適用できますよ。特異点近傍を扱うシートでは特に重要ですね。</p>



<h2 class="wp-block-heading"><span id="toc24">IMTAN関数とExcelの互換性</span></h2>



<p>GoogleスプレッドシートのIMTAN関数は、ExcelのIMTAN関数と仕様が完全に一致しています。構文・引数・戻り値の形式・エラー条件まで同じですよ。</p>



<p>ExcelファイルをGoogleスプレッドシートで開いてもIMTAN関数はそのまま動作します。逆にスプレッドシートで作った数式をExcelで開いても問題ありませんね。</p>



<p>ExcelのIMTAN関数は、Excel 2013以降のバージョンで追加されました。Microsoft 365、Excel for Mac、Excel Online でも同じように使えますよ。Excel 2010以前のバージョンでは利用できないので、古い環境とファイルを共有する場合は注意してくださいね。</p>



<p>Excel 2010以前で同じ計算をしたい場合は、IMSIN と IMCOS と IMDIV を組み合わせて代替できますよ。具体的には <code>=IMDIV(IMSIN(A2), IMCOS(A2))</code> のように書きますね。</p>



<h2 class="wp-block-heading"><span id="toc25">複素数関連の関数一覧</span></h2>



<p>IMTAN関数と一緒に使うことが多い、複素数関連の関数をまとめました。</p>



<figure class="wp-block-table"><table><thead><tr><th>関数名</th><th>機能</th></tr></thead><tbody><tr><td><a href="https://mashukabu.com/spreadsheet-complex-function/">COMPLEX</a></td><td>実数と虚数から複素数を作成する</td></tr><tr><td><a href="https://mashukabu.com/spreadsheet-imreal-function/">IMREAL</a></td><td>複素数の実数係数を返す</td></tr><tr><td><a href="https://mashukabu.com/spreadsheet-imaginary-function/">IMAGINARY</a></td><td>複素数の虚数係数を返す</td></tr><tr><td><a href="https://mashukabu.com/spreadsheet-imabs-function/">IMABS</a></td><td>複素数の絶対値（大きさ）を返す</td></tr><tr><td><a href="https://mashukabu.com/spreadsheet-imargument-function/">IMARGUMENT</a></td><td>複素数の偏角（角度）をラジアンで返す</td></tr><tr><td><a href="https://mashukabu.com/spreadsheet-imconjugate-function/">IMCONJUGATE</a></td><td>共役複素数を返す</td></tr><tr><td><a href="https://mashukabu.com/spreadsheet-imsin-function/">IMSIN</a></td><td>複素数のサインを返す</td></tr><tr><td><a href="https://mashukabu.com/spreadsheet-imcos-function/">IMCOS</a></td><td>複素数のコサインを返す</td></tr><tr><td>IMTAN</td><td>複素数のタンジェントを返す</td></tr><tr><td><a href="https://mashukabu.com/spreadsheet-imcot-function/">IMCOT</a></td><td>複素数のコタンジェントを返す</td></tr><tr><td><a href="https://mashukabu.com/spreadsheet-imsec-function/">IMSEC</a></td><td>複素数のセカントを返す</td></tr><tr><td><a href="https://mashukabu.com/spreadsheet-imsum-function/">IMSUM</a></td><td>複素数の合計（足し算）を返す</td></tr><tr><td><a href="https://mashukabu.com/spreadsheet-imsub-function/">IMSUB</a></td><td>複素数の差（引き算）を返す</td></tr><tr><td>IMPRODUCT</td><td>複素数の積（掛け算）を返す</td></tr><tr><td>IMDIV</td><td>複素数の商（割り算）を返す</td></tr><tr><td>IMEXP</td><td>複素数の指数関数を返す</td></tr><tr><td><a href="https://mashukabu.com/spreadsheet-imln-function/">IMLN</a></td><td>複素数の自然対数を返す</td></tr><tr><td><a href="https://mashukabu.com/spreadsheet-imsqrt-function/">IMSQRT</a></td><td>複素数の平方根を返す</td></tr></tbody></table></figure>



<p>IMTAN関数は、これら複素数関数群の中で「タンジェントを計算する」役割を担います。COMPLEXで作り、IMTANでタンジェントを取り、IMREAL・IMAGINARYで実部と虚部に分けて可視化するのが基本パターンですね。</p>



<h2 class="wp-block-heading"><span id="toc26">まとめ</span></h2>



<p>GoogleスプレッドシートのIMTAN関数は、複素数のタンジェント（正接）を返す関数です。交流回路の位相比、制御工学の伝達関数、フーリエ級数の係数計算、量子力学の散乱問題など、複素数三角関数が必要な場面で欠かせない関数ですよ。</p>



<ul class="wp-block-list"><li>構文は <code>=IMTAN(複素数)</code> で引数は1つだけのシンプルな関数</li><li>「a+bi」を渡すと「sin(a+bi) / cos(a+bi)」が返る</li><li>「a+bj」のような工学系表記もそのまま受け付ける</li><li>引数の角度はラジアンで扱う（度数法ならRADIANS関数で変換）</li><li>虚部0の実数を渡すと、実数のタンジェントと同じ値になる</li><li>実部0の純虚数を渡すと、「i × tanh(b)」の値が返る</li><li>COMPLEX関数の結果やセル参照、複素数演算の結果からタンジェントを計算できる</li><li>IMCOT関数の逆数、IMSIN÷IMCOSの比と等価</li><li>ARRAYFORMULAで複数の複素数を一括処理できる</li><li>z = π/2 + nπ + 0i のような特異点では #NUM! エラー（cos(z)=0で発散）</li><li>大文字の「I」「J」や全角文字、i・j以外の単位は #NUM! エラー</li><li>論理値やエラー値を渡すと #VALUE! エラー</li><li>虚部が極端に大きいとオーバーフローで #NUM! エラー</li><li>ExcelのIMTAN関数と完全互換（Excel 2013以降）</li></ul>



<p>複素数のタンジェントが必要になったら、IMTAN関数の出番ですよ。COMPLEX関数で複素数を作り、IMTANでタンジェントを取り、IMREAL・IMAGINARYで成分を分解する流れですね。この組み合わせで、エンジニアリング系のシートを軽快に組み立ててみてくださいね。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://mashukabu.com/spreadsheet-imtan-function/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
