スプレッドシートのATAN2関数の使い方|XY座標の逆正接

スポンサーリンク

スプレッドシートで座標から方向角を求めたいとき、「どの関数を使えばいいんだろう?」と迷ったことはありませんか?

ATAN関数では-90度から90度の範囲しか扱えないので、左側や下側の座標に対応できないケースがありますよね。

そんなときに使うのがATAN2関数です。=ATAN2(x, y) とX座標・Y座標を渡すだけで、全方向(-180度から180度)の角度を正しく返してくれます。

この記事では基本の書き方から、DEGREES関数との組み合わせ、座標から方位角を求める活用例、ATAN関数との違いまで紹介します。

スプレッドシートのATAN2関数とは?

ATAN2関数(読み方: アークタンジェントツー)は、XY座標から角度(ラジアン)を求める関数です。「ATAN」は「Arc Tangent(アークタンジェント=逆正接)」の略で、末尾の「2」は引数が2つあることを意味します。

たとえば =DEGREES(ATAN2(1, 1)) と入力すると「45」が返ります。X座標1、Y座標1の方向が45度だとわかるわけですね。

ATAN関数は1つのタンジェント値から角度を求めますが、戻り値が-90度から90度に限られます。ATAN2関数なら-180度から180度の全方向に対応できるのが大きな違いです。

ATAN2関数にできることをまとめると、次のとおりです。

  • XY座標から方向角(ラジアン)を返す
  • -180度から180度まで、全象限の角度を正しく判定する
  • DEGREES関数と組み合わせて度数法の角度に変換する
  • 方位角の計算やグラフ上の方向計算に使える

NOTE

ATAN2関数はGoogleスプレッドシートの全バージョンで使えます。Excelにも同名の関数があり、引数の順番も同じです。

ATAN2関数の書き方(構文と引数)

基本構文

=ATAN2(x, y)

カッコの中にX座標、Y座標の順で指定します。

引数の説明

引数必須/任意説明
x必須角度を求めたい点のX座標
y必須角度を求めたい点のY座標

引数は2つとも必須です。セル参照や数値を直接指定できます。

WARNING

数学の教科書では atan2(y, x) とY座標が先に来るのが一般的です。Googleスプレッドシートでは ATAN2(x, y) とX座標が先 なので、引数の順番を間違えないように注意してください。

戻り値の範囲

ATAN2関数が返す値は -PI() から PI() まで(度数法で-180度から180度)です。

=ATAN2(1, 0)    → 0(0度:右方向)
=ATAN2(0, 1)    → 1.5707...(90度:上方向)
=ATAN2(-1, 0)   → 3.1415...(180度:左方向)
=ATAN2(0, -1)   → -1.5707...(-90度:下方向)

ATAN関数の戻り値が-90度から90度なのに対して、ATAN2関数は-180度から180度と倍の範囲をカバーしています。これが「全象限対応」と呼ばれる理由ですね。

ATAN2関数の基本的な使い方

各象限の角度を求める

ATAN2関数の強みは、XY平面上のどの方向でも正しい角度を返せることです。4つの象限それぞれで試してみましょう。

X座標Y座標数式結果(ラジアン)角度方向
11=ATAN2(1, 1)0.7853…45度右上
-11=ATAN2(-1, 1)2.3561…135度左上
-1-1=ATAN2(-1, -1)-2.3561…-135度左下
1-1=ATAN2(1, -1)-0.7853…-45度右下

同じ「1と1の組み合わせ」でも、符号が違えばきちんと異なる角度を返してくれます。ATAN関数では ATAN(1/1) も ATAN(-1/-1) も同じ結果になってしまうので、この違いは大きいですよ。

DEGREES関数と組み合わせて度数法で結果を得る

ATAN2関数の結果はラジアンです。度数法で角度を知りたい場合はDEGREES関数で変換しましょう。

=DEGREES(ATAN2(1, 1))

結果は「45」です。「X座標1、Y座標1の方向は45度」とそのまま読み取れますね。

よく使うパターンの早見表を用意しました。

X座標Y座標数式角度(度)方向
10=DEGREES(ATAN2(1, 0))0右(東)
11=DEGREES(ATAN2(1, 1))45右上(北東)
01=DEGREES(ATAN2(0, 1))90上(北)
-11=DEGREES(ATAN2(-1, 1))135左上(北西)
-10=DEGREES(ATAN2(-1, 0))180左(西)
-1-1=DEGREES(ATAN2(-1, -1))-135左下(南西)
0-1=DEGREES(ATAN2(0, -1))-90下(南)
1-1=DEGREES(ATAN2(1, -1))-45右下(南東)

8方位すべてに正しい角度が返っています。方位を意識すると覚えやすいですね。

実務でのATAN2関数活用例

2点間の方向角を求める

地図や図面上で、A地点からB地点への方向角を計算する場面でATAN2関数が活躍します。

2点の座標差(dx, dy)をATAN2関数に渡せば方向角が求まります。

=DEGREES(ATAN2(B_x - A_x, B_y - A_y))

サンプルデータで計算してみましょう。A地点を(0, 0)として、各B地点への方向角を求めます。

B地点のX座標(A列)B地点のY座標(B列)数式方向角
34=DEGREES(ATAN2(A2, B2))53.13度
-34=DEGREES(ATAN2(A3, B3))126.87度
-3-4=DEGREES(ATAN2(A4, B4))-126.87度
3-4=DEGREES(ATAN2(A5, B5))-53.13度

ATAN関数では(3, 4)と(-3, -4)がどちらも53.13度になってしまいます。ATAN2関数なら正反対の方向を正しく区別できていますね。

TIP

A地点が(0, 0)以外の場合も、座標の差(dx = B_x – A_x, dy = B_y – A_y)を渡すだけでOKです。

0度~360度の角度に変換する

ATAN2関数の戻り値は-180度から180度です。「0度から360度」の範囲で角度を扱いたい場合もありますよね。次の数式で変換できます。

=MOD(DEGREES(ATAN2(x, y)), 360)

MOD関数(余りを求める関数)で360の剰余を取ることで、負の角度を正の角度に変換しています。

X座標Y座標そのままの角度MODで変換後
1-1-45度315度
-1-1-135度225度
0-1-90度270度
1145度45度

負の角度が0度以上に変換されていますね。方位角を「北を0度として時計回り」で表現したい場合などに便利ですよ。

グラフ上の方向計算に使う

散布図やチャートで各データ点の方向を計算したいとき、ATAN2関数が使えます。

たとえば中心点(50, 50)から各データ点への方向を求める場合は、次のように計算します。

=DEGREES(ATAN2(A2-50, B2-50))
データ点X(A列)データ点Y(B列)数式方向角
8080=DEGREES(ATAN2(A2-50, B2-50))45度
2080=DEGREES(ATAN2(A3-50, B3-50))135度
2020=DEGREES(ATAN2(A4-50, B4-50))-135度
8020=DEGREES(ATAN2(A5-50, B5-50))-45度

中心から各データ点がどの方向にあるか、角度で把握できます。データの分布パターンを分析する場面で役立ちますよ。

よくあるエラーと対処法

ATAN2関数でよくあるトラブルをまとめます。

症状原因対処法
#DIV/0! エラーXとYの両方が0IF関数で(0, 0)を除外する
#VALUE! エラー引数に文字列を渡した数値またはセル参照を指定する
結果がラジアンで読みにくいDEGREES関数で変換していない=DEGREES(ATAN2(x, y)) とする
期待と違う角度が返る引数のXとYを逆に指定したATAN2(x, y) のxが第1引数か確認する

両方が0のときの#DIV/0!エラー

ATAN2関数にx=0、y=0を渡すと#DIV/0!エラーになります。方向が定まらないので当然ですね。

=ATAN2(0, 0)    → #DIV/0!

データにゼロ座標が含まれる可能性がある場合はIFERROR関数で対処しましょう。

=IFERROR(DEGREES(ATAN2(A2, B2)), "原点")

XとYの引数を逆に指定した

ATAN2関数で最も多いミスが、引数の順番間違いです。Googleスプレッドシートでは ATAN2(x, y) とX座標が先です。

=DEGREES(ATAN2(1, 0))    → 0度(右方向)
=DEGREES(ATAN2(0, 1))    → 90度(上方向)

XとYを入れ替えると結果が変わります。数学の教科書の atan2(y, x) とは順番が逆なので、プログラミング経験がある方はとくに注意してください。

ATAN関数との違い・使い分け

項目ATANATAN2
構文=ATAN(値)=ATAN2(x, y)
引数タンジェント値1つX座標とY座標の2つ
戻り値の範囲-PI()/2 ~ PI()/2(-90度~90度)-PI() ~ PI()(-180度~180度)
象限の判定できない(第1・第4象限のみ)できる(全4象限に対応)
主な用途勾配から傾斜角を求める座標から方向角を求める

使い分けの基準

ATAN関数とATAN2関数は、次のように使い分けます。

  • ATAN関数を使う場面: 勾配率(高さ/水平距離)から傾斜角を求めるとき。方向は考えなくてよく、角度の大きさだけが知りたい場合
  • ATAN2関数を使う場面: XY座標があり、方向角(どちらの方向か)を正確に知りたいとき。地図・図面・グラフなどで全方向の角度が必要な場合

迷ったらATAN2関数を使うのが安全です。ATAN2関数はATAN関数の上位互換で、全象限に対応しているので間違いが起きにくいですよ。

似た関数との違い

関数動作引数用途
ATAN2XY座標から角度を返すX座標, Y座標座標から方向角を求める(全象限対応)
ATAN逆正接(アークタンジェント)を返す任意の実数タンジェント値から角度を逆算
TAN正接(タンジェント)を返す角度(ラジアン)角度からタンジェント値を求める
SIN正弦(サイン)を返す角度(ラジアン)Y座標・波形データ
COS余弦(コサイン)を返す角度(ラジアン)X座標・距離計算
DEGREESラジアンを度数法に変換するラジアン値ATAN2/ATAN/ASIN/ACOSの結果変換

まとめ

ATAN2関数は、XY座標から角度(ラジアン)を求める関数です。

ポイントを整理します。

  • 構文は =ATAN2(x, y) で、X座標を第1引数に指定する
  • 結果はラジアンで返るので、度数法には =DEGREES(ATAN2(x, y)) と変換する
  • 戻り値の範囲は-180度から180度で、全象限の方向角を正しく判定できる
  • ATAN関数は-90度から90度しか返せないので、方向角にはATAN2関数を使う
  • x=0かつy=0のときは#DIV/0!エラーになるので、IFERROR関数で対処する
  • 数学の atan2(y, x) とは引数の順番が逆(スプレッドシートではxが先)

まずは =DEGREES(ATAN2(1, 1)) で45が返ることを確認してみてください。

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