指定した数より大きい最初の素数を見つけるユーザー定義関数

Excelで指定した数より小さい最初の素数を見つける

Excelには、素数を直接的に計算する組み込み関数はありませんが、Visual Basic for Applications(VBA)を使用してマクロを作成することで、これを実現することが可能です。

関数のコード

Function PrevPrime(ByVal num As Long) As Long
    Do While num > 2
        num = num - 1
        If IsPrime(num) Then
            PrevPrime = num
            Exit Function
        End If
    Loop
    PrevPrime = "No primes less than input"
End Function

Function IsPrime(ByVal num As Long) As Boolean
    Dim i As Long
    If num < 2 Then
        IsPrime = False
        Exit Function
    ElseIf num = 2 Then
        IsPrime = True
        Exit Function
    ElseIf num Mod 2 = 0 Then
        IsPrime = False
        Exit Function
    End If
    For i = 3 To Sqr(num) Step 2
        If num Mod i = 0 Then
            IsPrime = False
            Exit Function
        End If
    Next i
    IsPrime = True
End Function

関数の使い方

以上のVBAコードをコピーして、ExcelのVBAエディター(Alt + F11キーを押して開く)から標準モジュール(挿入から)に貼り付け、マクロが有効になったワークブックに保存します。

このマクロを保存した後は、`=PrevPrime(A1)`のようにExcelのセルに数式を入力することで、A1セルの値より大きい最初の素数を表示できます。ただし、非常に大きな数値に対してこの関数を使用すると計算時間が長くなる可能性があることに注意してください。

まとめ

ExcelのVBAを利用すると、特定の数より小さい最初の素数を求めるなど、Excelの組み込み関数だけでは実現できない高度な計算を行うことが可能になります。この記事を参考に、独自のVBA関数を作成して、Excelの利用範囲を広げてみてください。

コメント