スプレッドシートのATAN関数の使い方|逆正接(アークタンジェント)

スポンサーリンク

スプレッドシートでタンジェント値から元の角度を逆算したいとき、どう計算すればいいか迷っていませんか?

TAN関数で角度からタンジェント値は求められるけど、その逆はどうやるの?」と感じますよね。

そんなときに使うのがATAN関数です。=ATAN(値) と書くだけで、タンジェント値から対応する角度(ラジアン)を返してくれます。

この記事では基本の書き方から、DEGREES関数と組み合わせた度数法への変換、勾配から傾斜角を求める実務活用、ATAN2関数との違いまで紹介します。

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

ATAN関数(読み方: アークタンジェント関数)は、タンジェント値から角度(ラジアン)を逆算する関数です。TAN関数の逆関数にあたります。

たとえば =DEGREES(ATAN(1)) と入力すると「45」が返ります。タンジェント値1に対応する角度が45度だとわかるわけですね。

ATAN関数は任意の実数を引数に取れます。ASIN関数ACOS関数と違って-1から1の範囲制限がないので、#NUM!エラーの心配がありません。結果はラジアン単位で返ります。度数法(30度、45度など)で結果を得たい場合は、DEGREES関数で変換します。

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

  • タンジェント値から対応する角度(ラジアン)を返す
  • DEGREES関数と組み合わせて度数法の角度に変換する
  • 勾配率(高さ/水平距離)から傾斜角を逆算する
  • TAN関数と組み合わせて三角関数の逆変換を行う

NOTE

ATAN関数はGoogleスプレッドシートの全バージョンで使えます。Excelとも完全に互換性があるので、ファイルのやり取りでも安心です。

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

基本構文

=ATAN(値)

カッコの中に正接(タンジェント)の値を指定します。

引数の説明

引数必須/任意説明
必須逆正接を求めたい数値。任意の実数を指定できる

引数は1つだけです。ASIN関数やACOS関数と違い、値の範囲に制限はありません。どんな数値でも受け付けるので、#NUM!エラーが起きない点がATAN関数の特徴です。

戻り値の範囲

ATAN関数が返す値は -PI()/2 から PI()/2 まで(度数法で-90度から90度)です。ただし、-90度と90度ちょうどは含みません。

=ATAN(-1000000)  → -1.5707...(-90度に近い値)
=ATAN(0)         → 0(0度)
=ATAN(1000000)   → 1.5707...(90度に近い値)

戻り値はラジアンです。度数法で使いたい場合は、DEGREES関数で変換しましょう。

TIP

ATAN関数の値は引数を大きくしても90度を超えません。引数が大きくなるほど90度に近づいていきますが、厳密に90度になることはありません。数学的には「漸近的に90度に収束する」と表現します。

ATAN関数の基本的な使い方

ラジアンで結果を得る

まずはATAN関数をそのまま使うパターンです。

=ATAN(1)

結果は「0.7853…」です。これはPI()/4と同じ値で、45度をラジアンで表したものですね。

代表的な値とATANの結果をまとめます。

数式タンジェント値結果(ラジアン)角度に換算
=ATAN(0)000度
=ATAN(0.5774…)0.5774…0.5235…30度
=ATAN(1)10.7853…45度
=ATAN(1.7321…)1.7321…1.0471…60度
=ATAN(100)1001.5607…約89.4度

ラジアンのまま使う場面は少ないかもしれません。次のDEGREES関数との組み合わせが実務では便利です。

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

実務では角度を「度」で扱うことがほとんどです。DEGREES関数と組み合わせれば、結果を度数法で取得できます。

=DEGREES(ATAN(1))

結果は「45」です。タンジェント値1の角度が45度だと、そのまま読み取れますね。

よく使う値の早見表を用意しました。

タンジェント値数式結果(度)
0=DEGREES(ATAN(0))0
0.5774…=DEGREES(ATAN(SQRT(3)/3))30
1=DEGREES(ATAN(1))45
1.7321…=DEGREES(ATAN(SQRT(3)))60
-1=DEGREES(ATAN(-1))-45

SQRT(3)/3 は約0.5774、SQRT(3) は約1.7321 です。数学の教科書でおなじみの値ですね。

TAN関数との逆変換を確認する

ATAN関数がTAN関数の逆関数であることを、実際に確認してみましょう。

=TAN(RADIANS(45))       → 1
=DEGREES(ATAN(1))       → 45

TAN関数で45度からタンジェント値1を求め、ATAN関数で1から45度に戻せています。元の角度に戻るわけですね。

=DEGREES(ATAN(TAN(RADIANS(45))))    → 45

このように入れ子にしても、元の角度が復元されます。

NOTE

TAN関数とATAN関数の逆変換が成立するのは、角度が-90度から90度の範囲のときだけです。たとえば135度のTAN値は-1ですが、ATAN(-1)は-45度を返します。これはATAN関数の戻り値が-90度~90度に限定されるためです。

実務でのATAN関数活用例

勾配率から傾斜角を求める

ATAN関数がもっとも活躍するのは、勾配から角度を求める場面です。高さと水平距離の比率(勾配率)がわかれば、傾斜角を計算できます。

勾配率は「高さ / 水平距離」で計算します。この値はタンジェントの定義そのものなので、ATAN関数で傾斜角に変換できます。

=DEGREES(ATAN(高さ/水平距離))

サンプルデータで計算してみましょう。

高さ(A列)水平距離(B列)数式傾斜角
110=DEGREES(ATAN(A2/B2))5.71度
310=DEGREES(ATAN(A3/B3))16.70度
510=DEGREES(ATAN(A4/B4))26.57度
1010=DEGREES(ATAN(A5/B5))45.00度

高さと水平距離が等しいとき(A5/B5 = 1)、傾斜角は45度になります。TAN関数の記事で「TAN(45度) = 1」と解説した逆のパターンですね。

TIP

道路の勾配がパーセントで表示されている場合は、そのまま100で割ってATAN関数に渡せます。「勾配8%」なら =DEGREES(ATAN(8/100)) で約4.57度です。

仰角を計算する

建物の高さと水平距離から仰角を求める場面でもATAN関数が使えます。

たとえば高さ20mのビルから50m離れた地点での仰角を計算します。目の高さを1.5mとすると、見上げる高さは18.5m(20 – 1.5)です。

=DEGREES(ATAN((20-1.5)/50))

結果は「20.30…」です。仰角は約20.3度ですね。

いくつかのパターンで計算してみましょう。

対象対象の高さ(A列)水平距離(B列)数式仰角
電柱8m10m=DEGREES(ATAN((A2-1.5)/B2))33.02度
ビル20m50m=DEGREES(ATAN((A3-1.5)/B3))20.30度
タワー100m200m=DEGREES(ATAN((A4-1.5)/B4))26.18度

TIP

ASIN関数でも仰角を計算できますが、斜辺の長さが必要です。水平距離と高さがわかっている場合はATAN関数を使うのが自然ですよ。

座標から方向角を求める

2点の座標差から方向角を計算する場面にもATAN関数が使えます。

たとえばA地点(0, 0)からB地点(3, 4)への方向角は、次の式で求まります。

=DEGREES(ATAN(4/3))

結果は「53.13度」です。X軸方向からの角度が約53度とわかります。

ただし、ATAN関数は-90度~90度の範囲しか返せません。B地点が左側(X座標がマイナス)にある場合は正しい方向角が得られないことがあります。そのようなケースではATAN2関数を使います。詳しくは「ATAN2関数との違い」のセクションで解説しますね。

よくあるエラーと対処法

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

症状原因対処法
#VALUE! エラー引数に文字列を渡した数値またはセル参照を指定する
結果がラジアンで読みにくいDEGREES関数で変換していない=DEGREES(ATAN(値)) とする
期待と違う角度が返る角度の象限を考慮していないATAN2関数の利用を検討する
#DIV/0! エラーATAN自体ではなく勾配計算で0割り水平距離が0でないか確認する

ラジアンと度数法の変換忘れ

ATAN関数の結果はラジアンです。度数法の角度が欲しいのにDEGREES関数を忘れると、見慣れない数値になります。

=ATAN(1)              → 0.7853...(ラジアン)
=DEGREES(ATAN(1))     → 45(度数法)

「なんだか小さい数値が返ってきたな」と思ったら、DEGREES関数の付け忘れを疑ってみてください。

勾配計算での#DIV/0!エラー

ATAN関数自体は#NUM!エラーが発生しません。ただし、勾配を計算する際に水平距離が0のセルがあると、割り算の時点で#DIV/0!エラーになります。

=DEGREES(ATAN(A2/B2))    ← B2が0だと#DIV/0!

IFERROR関数で対処しましょう。

=IFERROR(DEGREES(ATAN(A2/B2)), "距離0")

なお、水平距離が0で高さがある場合は角度が90度です。厳密に処理したい場合はIF関数で場合分けしてください。

=IF(B2=0, 90, DEGREES(ATAN(A2/B2)))

ATAN2関数との違い

ATAN関数に似た関数としてATAN2関数があります。どちらもタンジェント値から角度を求めますが、使い方と戻り値の範囲が異なります。

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

ATAN2関数を使う場面

ATAN関数は戻り値が-90度~90度に限られるため、4方向すべての角度を判定できません。

たとえば座標(3, 4)と(-3, -4)の方向角を考えてみましょう。

=DEGREES(ATAN(4/3))       → 53.13度
=DEGREES(ATAN(-4/-3))     → 53.13度(本当は-126.87度)

ATAN関数ではどちらも同じ結果になってしまいます。4/3 と -4/-3 は同じ値だからです。

ATAN2関数ならX座標とY座標を別々に渡すので、象限を正しく判定できます。

=DEGREES(ATAN2(3, 4))     → 53.13度
=DEGREES(ATAN2(-3, -4))   → -126.87度

座標から方向角を求めたい場合はATAN2関数を使いましょう。単純な勾配から角度を求めるだけならATAN関数で十分ですよ。

NOTE

GoogleスプレッドシートのATAN2関数は =ATAN2(x, y) の順番で、Excelでも同じく =ATAN2(x_num, y_num) の順番です。どちらの環境でも同じ書き方で使えますよ。

似た関数との違い・使い分け

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

ASIN・ACOS・ATANの使い分け

3つの逆三角関数は、どの三角比から角度を求めるかで使い分けます。

  • ASIN: 高さ/斜辺(sin値)から角度を求める
  • ACOS: 底辺/斜辺(cos値)から角度を求める
  • ATAN: 高さ/底辺(tan値)から角度を求める

どの値がわかっているかで、使う関数が決まります。実務で高さと水平距離がわかっている場面が多いので、ATAN関数の出番が一番多いかもしれませんね。

TAN関数との逆変換

TAN関数とATAN関数は、入力と出力が逆の関係です。

TAN: 角度(ラジアン) → タンジェント値
ATAN: タンジェント値 → 角度(ラジアン)

TAN関数が「角度からタンジェント値」を求めるのに対して、ATAN関数は「タンジェント値から角度」を逆算します。セットで覚えておくと便利ですよ。

まとめ

ATAN関数は、タンジェント値から角度(ラジアン)を逆算する関数です。

ポイントを整理します。

  • 構文は =ATAN(値) で、引数は任意の実数(範囲制限なし)
  • 結果はラジアンで返るので、度数法には =DEGREES(ATAN(値)) と変換する
  • ATAN(1) = 0.7853…(45度)が代表的な値
  • 勾配から傾斜角を求めるなら =DEGREES(ATAN(高さ/水平距離)) が使える
  • 座標から方向角を求めるなら、全象限に対応できるATAN2関数を使う
  • ASIN・ACOSと違って引数の範囲制限がなく、#NUM!エラーが起きない

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

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