🚀The world's best VBA AI has evolved. ExcelMaster is now an autonomous Agent.Read more →
Back to Blog

Excel ATAN・ATAN2 — 逆正接(アークタンジェント)と X,Y から求める角度

|

Excel ATAN・ATAN2 — 逆正接(アークタンジェント)と X,Y から求める角度

TL;DRASINACOSATANATAN2 は三角法を 逆向き に走らせます。比 (または座標の組)を与えると、角度 を返します。その角度は ラジアン で返って くるので、人間の値にするには DEGREES() で包みます — =DEGREES(ATAN(1))45 です。x と y があるときは必ず ATAN2 を使いましょう。素の ATAN は比しか見えず、 どの象限にいるかを判別できないからです。そして落とし穴に注意:Excel の ATAN2(x_num, y_num)x が先 — あらゆるプログラミング言語の atan2(y, x) の 順序とは逆です。

=DEGREES(ATAN(1))          ' 1 のアークタンジェント、度の角度として -> 45
=DEGREES(ATAN2(1, 1))      ' 点 (1, 1) の角度 -> 45
=DEGREES(ATAN2(-1, -1))    ' 点 (-1, -1) の角度 — ATAN では求められない -> -135
=DEGREES(ASIN(0.5))        ' サインが 0.5 になる角度 -> 30

「Excel で逆正接」を調べると、ほとんどのページは =ATAN(x) を差し出して先へ進みます。 しかし、実際に人を噛むのは — 答えが 45 ではなく 0.785 で出てくる理由、ATAN ではなく ATAN2 を使うべき場面、そして引数の順序が逆に感じる理由 — こうした点こそ、この関数が人を つまずかせる原因のすべてです。このページはそこから始めます。

この記事で学べること

  • 考え方の軸:前向きの三角法は角度を 消費 し、逆三角法は角度を 生み出す
  • どの逆関数もラジアンを返す理由(そして DEGREES() が要る理由)
  • ATAN2 が存在する核心の理由:ATAN は象限を見られない
  • 有名な落とし穴:Excel の ATAN2(x, y) は通常の引数の順序が逆
  • 方位/2 点間の角度を求める
  • ASINACOS が −1〜1 の外で #NUM! を返す理由

考え方の軸:三角法を逆向きに走らせる

SINCOSTAN角度 を受け取って を渡します。逆関数はまさに逆で、 を受け取って、それを生んだ 角度 を返します。SIN(30°) = 0.5 なので、 ASIN(0.5) = 30° です。互いに打ち消し合います。

そこから 2 つの帰結がまっすぐ導かれ、これがほぼすべての混乱の原因です。

  1. 角度を 生み出す ため、そして Excel の母語の角度単位が ラジアン であるため、その 出力はラジアンです。ほぼ必ず DEGREES() で囲みたくなります。
  2. 1 つの比は角度を一意に決めません — いくつもの異なる角度が同じサイン・コサイン・タンジェ ントを共有します。だから逆関数は、定義された範囲の中から 1 つ を選ばざるを得ず、その 制約こそ、ATAN2 が回避するために発明されたものです。

この 2 つを握れば、あとは細部です。

これらはラジアンを返す — DEGREES で包む

誰もが最初にぶつかるのがこれです。

=ATAN(1)             ' -> 0.785398163397448   (45 ではなくラジアン)
=DEGREES(ATAN(1))    ' -> 45                   (欲しかった度)

ATAN(1) は正しい — 0.785 ラジアンは Excel の母語で表した 45° そのもの です。ただ、 人間が角度として読む数値ではないだけです。直し方は前向きのルールの鏡像です。SIN/COS/ TAN が入り口で RADIANS() を必要とするのに対し、逆関数は出口で DEGREES() を必要と します。

=DEGREES(ASIN(0.5))    ' サインが 0.5 になる角度 -> 30
=DEGREES(ACOS(0.5))    ' コサインが 0.5 になる角度 -> 60
=DEGREES(ATAN(1))      ' タンジェントが 1 になる角度 -> 45

度とラジアンのダンス全体は RADIANS & DEGREES ガイド で 扱っています。ここで覚える 1 行は、DEGREES() は逆関数の結果を読む です。

ATAN2 が存在する理由:ATAN は象限を見られない

ここがこのテーマの核心です。ATAN は 1 つの数値 — y/x のような比 — を受け取ります。 しかし 同じ 比が 2 つの異なる向きを表します。点 (1, 1) と点 (−1, −1) はどちらも y/x = 1 ですが、正反対の向きを指しています(北東 vs 南西、45° vs −135°)。ATAN には 1 しか見えず、両者を区別する手段がありません。

=DEGREES(ATAN(1/1))     ' 点 (1, 1)   -> 45
=DEGREES(ATAN(-1/-1))   ' 点 (-1,-1)  -> 45   (誤り — 本来は -135)

ATAN は常に −90°〜90°(平面の右半分)の範囲で答えます。孤立した比が確定できるのはそこ までだからです。ATAN2x と y を別々に 受け取ることでこれを解決し、点がどの象限に あるかを把握して、−180°〜180° の全範囲を返せます。

=DEGREES(ATAN2(1, 1))     ' -> 45     (北東)
=DEGREES(ATAN2(-1, -1))   ' -> -135   (南西 — これで正しい)
=DEGREES(ATAN2(-1, 1))    ' -> 135    (北西)
=DEGREES(ATAN2(1, -1))    ' -> -45    (南東)

そこから導かれるルール:x と y がそろった瞬間 — 座標、速度、変位 — ATAN(y/x) ではなく ATAN2 に手を伸ばすこと。 素の ATAN が安全なのは、向きの情報が付いていない、正真正銘の むき出しの傾きを持っているときだけです。

落とし穴:Excel の ATAN2 は引数の順序が逆

これがあらゆるプログラマーを捕らえる罠です。C、Python、JavaScript、Java — 事実上すべての 言語で、関数は atan2(y, x)y が先 です。Excel は逆で、ATAN2(x_num, y_num)x が先 です。

=ATAN2(x_num, y_num)     ' Excel:X が先、次に Y
' atan2(y, x)            ' あらゆるプログラミング言語:Y が先、次に X

だからコードからそのまま移植した数式 — あるいは Python に住む同僚から来た数式 — は引数が 入れ替わっていて、しかも厄介な形で失敗します。エラーにならず、余角 を返すだけで、それが もっともらしく見えることがあります。ATAN2 の結果が、期待した値から 45° の線について反転 しているなら、まず引数の順序を確認しましょう。迷ったら、Excel は左から右へ「横、それから 縦」= x、それから y と読む、と思い出してください。

実用例:2 点間の方位/角度

ATAN2 の典型的な仕事は、ある点から別の点への角度(または方位)です。始点 (x1, y1) と 終点 (x2, y2) があるとき、向きはこうです。

=DEGREES(ATAN2(x2-x1, y2-y1))    ' 点 1 から点 2 へ向かう線の角度
=MOD(DEGREES(ATAN2(x2-x1, y2-y1)), 360)   ' 同じもの、0〜360 度に正規化

MOD(..., 360) は、ATAN2 の −180〜180 の出力を、必要なら扱いやすい 0〜360 の方位値に 変えます。この 1 つの数式 — ATAN ではなく ATAN2 を使ったもの — が、地図や工学のシート 全体で、方位計算、風向、「あれはここからどっちの方向か」を支えています。

ASIN と ACOS:定義域は −1〜1、外れると #NUM!

サインとコサインは −1〜1 の値しか 生み出さない ため、その逆関数はその範囲の値しか 受け付けられません。サインが 2 になる角度を求めても、そんな角度は存在しません — Excel は #NUM! を返します。

=DEGREES(ASIN(0.5))    ' -> 30
=DEGREES(ACOS(-1))     ' -> 180
=ASIN(2)               ' サインが 2 になる角度はない -> #NUM!
=ACOS(1.5)             ' 範囲外 -> #NUM!

ASINACOS からの #NUM! は、ほぼ必ず上流の値が −1〜1 の外にはみ出したことを意味 します — たいていは、本来は ≤ 1 のはずの比が、浮動小数点の丸めで 1.0000001 に着地した ケースです。それが原因なら、こう挟み込みます:=ASIN(MIN(1, MAX(-1, ratio)))。対照的に ATANATAN2 はどんな入力も受け付けます — タンジェントは任意の実数を取りうるので — 定義域が原因で #NUM! を投げることは決してありません。

ExcelMaster が役立つ場面

逆三角関数は 2 つの静かな形で失敗します。度として読んでしまうラジアンの答えと、ATAN2 が 必要な場所での ATAN です。ExcelMaster に「点 A から点 B への角度を出して」と頼めば、 =DEGREES(ATAN2(x2-x1, y2-y1)) を組み立てます — 正しい関数、正しい引数の順序、DEGREES() はすでに包まれた状態で。Python から移植した ATAN2 を貼れば、鏡像の方位を生む前に、逆に なった引数に印を付けます。ASIN からの #NUM! を渡せば、範囲外の入力までたどります。

よくある質問

Excel で逆正接(アークタンジェント)を求めるには?

むき出しの比には ATAN、x/y 座標には ATAN2 を使い、それから度に変換します: =DEGREES(ATAN(1))45 を返します。ATAN 単体はラジアンを返すので、読みやすい角度に するのが DEGREES() のラッパーです。

Excel の ATAN と ATAN2 の違いは何ですか?

ATAN は 1 つの比を受け取って −90°〜90° の角度を返すため、点がどの象限にあるかを判別 できません。ATAN2 は x と y を別々に受け取り、−180°〜180° の全角度を返します。座標が両方 そろっているときは、いつでも ATAN2 を使いましょう。

Excel の ATAN2 は引数が逆さまに見えるのはなぜですか?

Excel が ATAN2(x_num, y_num)x を先 にするのに対し、C・Python・JavaScript と ほとんどのプログラミング言語は atan2(y, x)y を先 にするからです。コードからコピー した数式は入れ替わっています。Excel の順序は「横、それから縦」= x、それから y と読みましょう。

ASIN や ACOS で #NUM! が出るのはなぜですか?

入力が −1〜1 の間でなければならないからです(サインやコサインが取りうる唯一の値です)。その 範囲の外には有効な角度がないため、Excel は #NUM! を返します。多くは丸めのアーティファクト で — ≤ 1 のはずの値が 1.0000001 に着地したもの — =ASIN(MIN(1, MAX(-1, x))) で挟み込め ます。

Excel で 2 点間の角度を求めるには?

座標の差に ATAN2 を使い、DEGREES() で包みます:=DEGREES(ATAN2(x2-x1, y2-y1))ATAN2 が返す −180〜180 の範囲ではなく 0〜360° の方位が欲しいなら、MOD(..., 360) を 加えます。

検証環境

検証環境: Excel 365 (Windows 11) — 最終確認 2026-07-24。

関連ガイド: Excel SIN, COS & TAN · Excel RADIANS & DEGREES · Excel POWER & SQRT · Excel ABS & SIGN · Excel MOD (INT, TRUNC)