Excel マクロを使って、列範囲の数字の移動値を書き出す方法を教えて頂けないでしょうか。説明ですが、0~9の数字が時計の文字盤みたいに並んでいたとします。

画像

Visual Basic | Visual Basic65閲覧xmlns="http://www.w3.org/2000/svg">100

ベストアンサー

0

ThanksImg質問者からのお礼コメント

PSXさん、sen********さん、お二人の方回答有難う御座いました。 どちらの回答も思い通り動きました。こうなると知識が無く頭の悪い自分はBAの選択に悩んでしまいます。sen********さんの回答の構文が数行短かったのでBAとさせて頂きました。こんな変な選択でお二人には申し訳なく思います。お二人の方、本当に有難う御座いました。

お礼日時:10/16 16:22

その他の回答(1件)

0

’一例です。一部計算結果が違うようです。 Sub Start() Dim i As Long i = 1 Do While Cells(i + 1, 4).Value <> "" Cells(i + 1, 7).Value = Sabun(Cells(i, 4).Value, Cells(i + 1, 4).Value) i = i + 1 Loop End Sub Function Sabun(no1, no2) '差分計算 Dim arr As Variant Dim myArray As Variant Dim st1 As Long Dim st2 As Long Dim num1 As Long Dim num2 As Long '並び順 myArray = Array(0, 3, 6, 9, 2, 5, 8, 1, 4, 7) For Each arr In myArray st1 = st1 + 1 st2 = st2 + 1 If no1 = arr Then num1 = st1 If no2 = arr Then num2 = st2 Next arr If num2 > num1 Then 'no2がno1より、並び順で後方に出現する場合 Sabun = num2 - num1 ElseIf num1 > num2 Then 'no2がno1より、並び順で前方に出現する場合 Sabun = UBound(myArray) + 1 - num1 + num2 Else 'no2がno1が同一数字の場合 Sabun = UBound(myArray) + 1 End If End Function

結果はかわらないが、書き方訂正 ElseIf num1 > num2 Then 'no2がno1より、並び順で前方に出現する場合 「no2がno1より、並び順で前方に出現・・・」と書いているのだから、num2 < num1と書くべきでした。 そのそも主を左に置くと考えます。 ElseIf num2 < num1 Then 'no2がno1より、並び順で前方に出現する場合