VBA

VBA – 最大公約数関数を自作

Excel VBAは、ビジネスやデータ分析で非常に強力なツールとして使われています。この記事では、Excel VBAで実装された最大公約数を求める関数に焦点を当て、そのコードの詳細な解説を行います。最大公約数は、数学的な計算やデータ処理において頻繁に使用される重要な概念であり、VBAでどのように実装されているかを理解することは、Excelをより効果的に利用する手助けとなります。

最大公約数関数の概要

最大公約数 (Greatest Common Divisor, GCD) は、2つ以上の整数の中で共通の約数の中で最も大きなものです。EXCELの関数(GCD)を利用する事で求めることはできますが、それをVBAで実装する方法を紹介します。

実装

Sub CallTest()
    Debug.Print 最大公約数(24, 96)
End Sub

Function 最大公約数(ByVal M As Long, ByVal N As Long) As Long
    If M <= 0 Or N <= 0 Then Exit Function
    
    ' M >= Nに調整
    If M < N Then Swap M, N
    
    Dim Q As Long, R As Long
    Do
        Q = M \ N
        R = M Mod N
        If R = 0 Then
            最大公約数 = N
            Exit Function
        End If
        
        M = N
        N = R
    Loop
End Function

Private Sub Swap(A As Long, B As Long)
    Dim Tmp As Long
    Tmp = A
    A = B
    B = Tmp
End Sub

解説

Sub CallTest()
    Debug.Print 最大公約数(24, 96)
End Sub

このサブルーチンは、最大公約数関数を呼び出してその結果をデバッグウィンドウに表示します。具体的には、24と96の最大公約数が求められます。

Function 最大公約数(ByVal M As Long, ByVal N As Long) As Long
    If M <= 0 Or N <= 0 Then Exit Function
    
    ' M >= Nに調整
    If M < N Then Swap M, N
    
    Dim Q As Long, R As Long
    Do
        Q = M \ N
        R = M Mod N
        If R = 0 Then
            最大公約数 = N
            Exit Function
        End If
        
        M = N
        N = R
    Loop
End Function

この関数は、2つの整数 MN の最大公約数を求めます。アルゴリズムはユークリッドの互除法を使用しています。

  1. M および N が0以下の場合、関数は終了します。
  2. MN より小さい場合、MN を入れ替えます。
  3. ユークリッドの互除法に基づいて MN を更新し、最大公約数を見つけるまで繰り返します。
Private Sub Swap(A As Long, B As Long)
    Dim Tmp As Long
    Tmp = A
    A = B
    B = Tmp
End Sub

このサブルーチンは、引数として渡された2つの変数 AB の値を入れ替えます。

まとめ

この記事では、Excel VBAで最大公約数を求めるカスタム関数のコードを詳細に解説しました。ユークリッドの互除法を使用して効率的に最大公約数を見つける方法を理解し、VBAでのデータ処理において便利なツールとして利用できると思います。これを活用して、日常の業務やプロジェクトで効率的に作業して下さい。