質問への回答をよりよく説明するために、回答を書き直したいと思いました。数式には EXCEL を使用し、単位には学位を使用しています。
簡単にするために、B
は 2 つの値の大きい方で、 は 2 つの値A
の小さい方です。後でソリューションでMAX()
と をそれぞれ使用できます。MIN()
パート 1 - 行く方法は?
最初にやりたいことは、時計回りまたは反時計回りのどちらの方向に計算を実行するかを決定することです。IF()
そのためにステートメントを使用します。
IF( (B-A)<=180, (Clockwise_Formula), (AntiClockwise_Formula) )
上記の式は、 から反時計回り ( から からB
時計回りにA
進むのと同じ) が 180 度以下かどうかをチェックします。そうでない場合は、反対方向に移動する方が短くなります。A
B
これを確認するには: 90 - 45 = 45 (180 以下) は IF ステートメントを TRUE にするため、時計回りの方向は短くなりますが、315 - 45 = 270 (180 より大きい) は if ステートメントを作成します。 FALSE の場合、反時計回りの式は短くなります。
パート 2 - 時計回りの式
ここで、とN
の間の時間を時計回りまたは反時計回りに補間します。時計回りの式は比較的単純です。A
B
Clockwise_Formula: ((B-A)/N*S)+A
S
は 1 から始まり N-1 で終わる補間回数のカウントです ( の場合、S = N
答えは になりますB
)
例: A
= 90、B
= 270、N
= 4
S=1: ((270-90)/4*1)+90 = 135
S=2: ((270-90)/4*2)+90 = 180
S=3: ((270-90)/4*3)+90 = 225
パート 3 - 反時計回りの式
反時計回りの式は、360 度の角度を反時計回りに交差する必要があるため、もう少し複雑になります。私が考えることができる最も簡単な方法は、 に 360 を追加し、関数A
を使用して答えを 360 で変調することです。MOD(FORMULA,VALUE)
が最小の数になったため、式を入れ替える必要もありますA
。(少し混乱するかもしれませんが、うまくいきます!)B
B
(Unmodulated) AntiClockwise_Formula: (((A+360)-B)/N*S)+B
例: A
= 60、B
= 300、N
= 4
S=1: (((60+360)-300)/4*1)+300 = 330
S=2: (((60+360)-300)/4*2)+300 = 360
S=3: (((60+360)-300)/4*3)+300 = 390
パート 4 - 回答を 0 ~ 360 に制限する
答えが 360 よりも大きくなることがあります (ただし、常にではありません)。ここで、Anticlockwise_formula をMOD()
関数でラップします。
AntiClockwise_Formula: MOD((((A+360)-B)/N*S)+B,360)
パート 3 で使用した例を変更すると、次のようになります。
S=1: 330
S=2: 0
S=3: 30
パート 5 - すべてをまとめる
パート 1 ~ 4 のすべての要素を組み合わせると、答えは次のようになります。
IF((B-A)<=180,((B-A)/N*S)+A,MOD((((A+360)-B)/N*S)+B,360))
どこ:
A
= 2 つの値の小さい方 (A を MIN() に置き換えることができます)
B
= 2 つの値のうち大きい方 (B を MAX() に置き換えることができます)
N
= 実行する補間の数 (例: 2 は半分、3 は 3 分の 1 など)
S
= 最大 N-1 までの増分カウント (説明についてはパート 2 を参照)