VBA Tan 関数 角度の正接(タンジェント)を返します

VBA Cos 関数 角度の余弦(コサイン)を示す値を返します

Excel VBAの「Tan 関数」について解説します。

目次

Tan 関数とは

Excel VBA の Tan 関数は、数学的な三角関数の正接(タンジェント)を扱うときに使用します。与えられた角度を示す数値のタンジェント(傾き具合を示す値)を返す関数です。

Tan 関数の構文や実際の使い方について具体的に解説していきたいと思います。

Tan 関数(Visual Basic for Applications リファレンス)

構文(引数と戻り値)

Excel VBAの関数を使いこなすには、関数の構文を正しく理解しておくことが重要です。

構文

Tan(number)

引数

指定項目説明
number【必須】角度をラジアン(弧度法)で表す任意の有効な数値(式)

※ 角度を度数法「°(度)」ではなくラジアンで扱う点に注意

number の単位「ラジアン」とは

ラジアンとは数学の角度を表す単位で
円(扇形)の孤の長さ(L)÷円の半径(r)」によって求められる値のことです。

度°をラジアンに変換するには、度にπ/180 を掛けます。 ラジアンから度に変換するには、ラジアンに 180/π を掛けます。

VBA では、「度 * WorksheetFunction.Pi() / 180」ですが「WorksheetFunction.Radians(度)」を使ってもOKです。

  • 0° → 0 ラジアン
  • 45° → π/4 ラジアン
  • 90° → π/2 ラジアン
  • 180° → π ラジアン
  • 360° → 2π ラジアン

戻り値

直角三角形の正接(タンジェント) 2 辺の比を Double型の値で返します。

Tan の2 辺の比は、角度の反対側にある辺の長さ(高さ)を底辺の長さで割った値です。

これは次の式 Tan(θ) = sin(θ) / cos(θ) で表すことが出来ます。

Tan 関数の注意点

角度が 90°(π/2 ラジアン)に近づくと、値が急激に大きくなるのが特徴です。
Tan(90度) = sin(90度) / cos(90度) = 1 / 0 です。
oで割ることは出来ないので Tan(90度) は定義できないということになります。

エラーは発生しませんが、「1.63312E+16」のような非常に大きな数値(発散した値)が返り、表示になってしまうので回避策が必要になります。

解説(使用例)

ここからは、サンプルを使って使用例や注意点などについて解説します。

Tan 関数の基本的な使い方

角度をラジアンに変換して Tan を求める

45度のタンジェントを求める例です。

'■Tan関数サンプル1(45度のタンジェントを求める)
Sub Tan_Sample_01()
  Dim deg As Double   '度=degrees
  Dim rad As Double   'ラジアン=Radians
  Dim res As Double   '結果=result
  
  deg = 45
  '度をラジアンに変換
  rad = deg * WorksheetFunction.Pi() / 180
  res = Tan(rad)
  
  MsgBox "Tan(" & deg & "°) = " & res
End Sub

実行結果がこちらです。

Tan関数サンプル1実行画像

45度のタンジェントは 1 です。

セル値(度)を使ってTanを計算する

次の例は、セルの値(角度)を取得して計算結果をセルに書き込む方法です。

'■Tan関数サンプル2(セル値を取得して計算する)
Sub Tan_Sample_02()
  Dim deg As Double   '度=degrees
  Dim rad As Double   'ラジアン=Radians
  Dim res As Double   '結果=result
  Dim i As Long

  For i = 2 To 14
    deg = Cells(i, 1).Value 'A列セル値を取得
    rad = deg * WorksheetFunction.Pi() / 180
    res = Tan(rad)
    Cells(i, 2).Value = rad 'B列セルに書き込む
    '分母のCos(θ)が限りなくゼロに近づくと
    '発散データとなるのでC列セルに書き込まない
    If Abs(Cos(rad)) < 0.0000000001 Then
      Cells(i, 3).Value = ""
    Else: Cells(i, 3).Value = res
    End If
  Next i
End Sub

実行結果のワークシート画像がこちらです。

Tan関数サンプル2の実行結果グラフ付き画像

Tan値のグラフを一緒に表示しています。

Tan

角度90度、-90度のTan値には注意が必要です。

コード12行目以降で、角度±90度、±270度に近づく際に「1.63312E+16」のような発散データが表示されてしまうを回避してセルに空白を表示するようにしています。(分母になるコサインの値を判定しています)

これを行わない場合セルに「1.63312E+16」のような値が入ってしまうため、グラフがおかしな表示になってしまいます。

まとめ

おわりに

VBA の Tan 関数は、数学的な三角関数(sin,cos,tan)の tan を扱うときに使用します。

tan は、直角三角形の「高さ÷底辺」の Double型の値で、角度の斜辺の傾きを表しています。

  • Tan 関数はラジアン単位で引数値を受け取ります
  • 度数法の角度(°) → 「× π ÷ 180」でラジアンへの変換が必須です
  • Tan は直角に対する辺の傾き具合です
  • Tan の値は -1 ~ 1 の範囲(角度が増えると「波のように」変化する)
    • 0° → 0
    • 45° → 1
    • 90° → 定義されません(値が存在しません)
    • 135° → -1
    • 180° → 0
  • Tan(θ) = sin(θ) / cos(θ)
  • 90°ではcosθが 0 になるため「0による割り算」は数学的に計算不可能(未定義)になります。
    このためエラーとはなりませんが、値が発散してしまうため注意が必要です。

【注意】次のような間違いや注意点があります。

  • ❌ 度をそのまま引数として渡してしまう
  • ❌ 90度でエラーになると思い込んでしまう
  • ❌ Sic / Cos / Tan の違いがよく分からない
    • Sin(正弦)= 角度に対する高さの割合(斜辺分の高さ)→ y座標
    • Cos(余弦)= 角度に対する底辺の割合(斜辺分の底辺)→ x座標
    • Tan(正接)= 傾き具合(底辺分の高さ)→ 傾き( y / x )

以上、この解説が少しでもみなさまのお役に立てたなら幸いです(^^;

VBAの関数一覧はこちらからご参照ください。

VBAサンプルファイルダウンロードページのご案内

このページで使用したサンプルファイルの登録はありません(^^;
ページ内のコードをコピーしてご利用ください。

ダウンロードページへのリンクは下のカードクリックでジャンプできます。
よろしければご利用ください!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次