Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


3453 / 13644 ツリー ←次へ | 前へ→

【62126】アークタンジェント Atn けい 09/6/23(火) 19:52 質問[未読]
【62128】Re:アークタンジェント Atn もも 09/6/23(火) 20:29 発言[未読]
【62129】Re:アークタンジェント Atn yoshi 09/6/23(火) 20:38 回答[未読]
【62130】Re:アークタンジェント Atn けい 09/6/23(火) 21:47 質問[未読]
【62131】Re:アークタンジェント Atn もも 09/6/23(火) 21:56 発言[未読]
【62132】Re:アークタンジェント Atn けい 09/6/23(火) 22:28 質問[未読]
【62134】Re:アークタンジェント Atn もも 09/6/24(水) 0:07 発言[未読]
【62135】Re:アークタンジェント Atn もも 09/6/24(水) 0:09 発言[未読]
【62136】Re:アークタンジェント Atn けい 09/6/24(水) 1:37 お礼[未読]

【62126】アークタンジェント Atn
質問  けい  - 09/6/23(火) 19:52 -

引用なし
パスワード
   Atnでプログラムを作成し、計算させたのですが
答えが電卓で計算した答えとあいません。

A=5
B=5

C=Atn(A/B)

電卓の答え 45
上記のプログラムの答え 0.785

どのようなプログラムを組めばいいのでしょうか?

【62128】Re:アークタンジェント Atn
発言  もも  - 09/6/23(火) 20:29 -

引用なし
パスワード
   ▼けい さん:
エクセルでの三角関数の答えはラジアンで出てきますので
度に直す必要があります。

Dim PI As Double

PI = 4 * Atn(1)

a = 5
b = 5

c = Atn(a / b) / (2 * PI) * 360

【62129】Re:アークタンジェント Atn
回答  yoshi  - 09/6/23(火) 20:38 -

引用なし
パスワード
   >A=5
>B=5
>C=Atn(A/B)
>電卓の答え 45
>上記のプログラムの答え 0.785
>どのようなプログラムを組めばいいのでしょうか?

答え0.785の単位はラジアンです。45の単位は度でしょう。
角度の計算においては基本です。度にしたければラジアンを度に変換しましょう。

 Dim a#, b#, c#
 a = 5
 b = 5
 c = Application.Degrees(Atn(a / b))
どういう変換をしているかは↓。基本ですけど。
 c = Atn(a / b) * 180 / Application.Pi

【62130】Re:アークタンジェント Atn
質問  けい  - 09/6/23(火) 21:47 -

引用なし
パスワード
   アークコサイン、アークサインはどのように
すればいいですか?

【62131】Re:アークタンジェント Atn
発言  もも  - 09/6/23(火) 21:56 -

引用なし
パスワード
   ▼けい さん:
>アークコサイン、アークサインはどのように
>すればいいですか?

すべて同じです。
結果はラジアンで返されますので度にしたければ
変換する必要があります。

180(deg)= π(rad)
360(deg)= 2π(rad)

ですから、後は算術で変換できますよね?

【62132】Re:アークタンジェント Atn
質問  けい  - 09/6/23(火) 22:28 -

引用なし
パスワード
   アークタンジェントはAtn
アークコサイン、アークサインもAtn
でプログラムすればいいんですか?

(アークタンジェント)
A=5
B=1
C=1
Atn(A/ B) * 180 / Application.PI

(アークサイン)
Atn(C / B) * 180 / Application.PI

でいいんでしょうか?

【62134】Re:アークタンジェント Atn
発言  もも  - 09/6/24(水) 0:07 -

引用なし
パスワード
   ▼けい さん:
>アークタンジェントはAtn
>アークコサイン、アークサインもAtn
>でプログラムすればいいんですか?
>
>(アークタンジェント)
>A=5
>B=1
>C=1
>Atn(A/ B) * 180 / Application.PI
>
>(アークサイン)
>Atn(C / B) * 180 / Application.PI
>
>でいいんでしょうか?

それではアークサインにはなりません。
VBAには逆関数はアークタンジェントしか用意されていません。
なぜかは知りませんが、おそらく最初に私が掲示したコードのように
πを算出する為ではないかと思いますが。
(エクセルVBAではワークシート関数でPIがありますが
 普通のVBなどではπを出すのに4*atn(1)を使う)

で、そもそもエクセルVBAでしたらワークシート関数が使えるので

アークサイン = Application.WorksheetFunction.Asin(B / C) * 180 / .Pi
アークコサイン = Application.WorksheetFunction.Acos(a / C) * 180 / .Pi

ワークシートの関数を使うようにしてはどうでしょうか?

【62135】Re:アークタンジェント Atn
発言  もも  - 09/6/24(水) 0:09 -

引用なし
パスワード
   ▼けい さん:

記載のコードにミスがありましたので再掲します。

With Application.WorksheetFunction
 アークサイン = .Asin(B / C) * 180 / .Pi
 アークコサイン = .Acos(a / C) * 180 / .Pi
End With

【62136】Re:アークタンジェント Atn
お礼  けい  - 09/6/24(水) 1:37 -

引用なし
パスワード
   ▼もも さん:
ありがとうございました。
とても勉強になりました。

3453 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free