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

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

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

目次

Cos 関数とは

Excel VBA の Cos 関数は、数学的な三角関数の余弦(コサイン)を扱うときに使用します。与えられた角度を示す数値のコサイン値を返す関数です。

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

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

構文(引数と戻り値)

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

構文

Cos(number)

引数

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

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

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

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

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

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

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

戻り値

直角三角形の 2 辺の比( -1 ~ 1 の範囲)を Double型の値で返します。

2 辺の比は、角度を挟む底辺の長さを斜辺の長さで割った値です。

解説(使用例)

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

Cos 関数の基本的な使い方

ラジアン値を直接渡す例

引数にラジアン値を直接渡す例です。

'■Cos関数サンプル1(ラジアン値を直接渡す)
Sub Cos_Sample_01()
  Debug.Print Cos(0)
  Debug.Print Cos(3.14159265358979) '180°のラジアン値
End Sub

実行結果がこちらです。

Cos関数サンプル1実行結果

0ラジアンのコサインは1
180°のラジアン値(π)のコサインは-1

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

次の例は、度数法の角度をラジアンに変換して引渡す方法です。

'■Cos関数サンプル2(角度をラジアンに変換して求める)
Sub Cos_Sample_02()
  Dim deg As Double   '度=degrees
  Dim rad As Double   'ラジアン=Radians
  Dim res As Double   '結果=result
  
  For deg = 0 To 90 Step 15
    rad = deg * WorksheetFunction.Pi() / 180
    'コサインを求める
    res = Cos(rad)
    '結果をイミディエイトに表示する
    Debug.Print "Cos(" & deg & "°) = " & res
  Next
End Sub

実行結果のイミディエイト画像がこちらです。

Cos関数サンプル2実行結果イミディエイト

90度のコサインは理論的に「0」のはずですが、Cos(90°) = 6.12323399573677E-17 と表示されています。

Cos 関数使用時の注意点

90度のコサインが「0」になっていないのは、πは小数以下が循環せずに無限に続く無理数だからです。
VBAやエクセルでは、πを有効桁数(15桁)で丸めてしまうの仕様のためこのようなほぼゼロという結果になるのです。けして計算が間違っているわけではありません。完全な 0 にならないのは次の 浮動小数点誤差 によるものです。

  • VBAの Double 型は実数を「近似値」で扱う
  • 円周率 π も近似値
  • Cos(π / 2) の結果が「限りなく0に近い数値」になる

cos270°、sin180°、tan180°も同様に「0」表示になりません。

どうしても「0」で表示したい場合は「Round関数で丸める」や「誤差を判定して 0 に置き換える」などの処理を加える必要があります。

0〜360°のコサイン値をワークシートに出力する

Excelワークシートに結果を書き込むサンプルです。
0〜360°のループ処理でラジアンとコサインの値を書き出します。

'■Cos関数サンプル3(各値をシートに出力する)
Sub Cos_Sample_03()
  Dim i As Long
  Dim rad As Double
  Dim res As Double

  Range("A1").Value = "角度 °"
  Range("B1").Value = "ラジアン"
  Range("C1").Value = "Cos値"
    
  For i = 0 To 360 Step 30
    rad = WorksheetFunction.Radians(i)
    res = Cos(rad)
    'ほぼ0なら0に補正する
    If Abs(res) < 0.0000000001 Then
      res = 0
    End If
    Cells(i / 30 + 2, 1).Value = i
    Cells(i / 30 + 2, 2).Value = rad
    Cells(i / 30 + 2, 3).Value = res
  Next i
End Sub

実行結果がこちらです。

Cos関数サンプル3実行結果のシート画像

角度90度のコサイン「0」を超えるとコサイン値はマイナスになり、270度で再び「0」となります。

14~17行目で、「誤差を判定して 0 に置き換える」処理を追加しています。
270度の補正前の結果は「-1.83697019872103E-16」とマイナスとなるのため、Abs関数で絶対値としてから判定するようにしています。

このサンプルでは、Excelのセルに結果を書き込んでいますが、逆にセルの値を使ってコサインを計算するなどにも応用できます。

Cos関数を使った座標計算例

円周上の点の座標を求める場合などに Cos 関数はよく使われます。

'■Cos関数サンプル4(X座標を求める)
Sub Cos_Sample_04()
  Dim r As Double     '半径
  Dim deg As Double   '角度
  Dim rad As Double   'ラジアン

  r = 10
  deg = 30
  rad = deg * WorksheetFunction.Pi() / 180

  MsgBox "半径" & r & "角度" & deg & _
          "°のX座標=" & r * Cos(rad)
End Sub

円周上の X座標は 半径 × Cos(角度) で求められます。サンプルの実行結果は次のとおりです。

Cos関数サンプル4(X座標を求める)結果表示

まとめ

おわりに

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

cos は、直角三角形の角度を挟む底辺の長さを斜辺の長さで割った Double型の値です。

  • Cos 関数はラジアン単位で引数値を受け取ります
  • 度数法の角度(°) → 「× π ÷ 180」でラジアンへの変換が必須です
  • Cos は円のY座標です
  • Cos の値は -1 ~ 1 の範囲(角度が増えると「波のように」変化する)
    • 0° → 1
    • 90° → 0
    • 180° → -1
    • 270° → 0
    • 360° → 1
  • グラフ、アニメーション、周期動作、シミュレーションなどの用途があります
  • Excelシートへの出力と組み合わせると活用の幅が広がります

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

  • ❌ 度をそのまま引数として渡してしまう
  • ❌ 戻り値が完全な 0 にならない現象があります
  • ❌ Sic / Cos / Tan の違いがよく分からない
    • Sin(正弦)= 角度に対する高さの割合(斜辺分の高さ)
    • Cos(余弦)= 角度に対する底辺の割合(斜辺分の底辺)
    • Tan(正接)= 傾き具合(底辺分の高さ)

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

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

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

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

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

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