Excel VBA | 配列を返す関数

VBA
スポンサーリンク

「指定範囲の素数の合計を返す関数」を作ってみましょう。今回は 10~50の素数を合計して返す関数です。


サンプルコード

Function SumPrimesInRange(ByVal startNum As Integer, ByVal endNum As Integer) As Long
    Dim i As Integer, j As Integer
    Dim isPrime As Boolean
    Dim total As Long
    
    total = 0
    
    For i = startNum To endNum
        If i >= 2 Then
            isPrime = True
            ' 2から√iまでで割り切れるかチェック
            For j = 2 To Int(Sqr(i))
                If i Mod j = 0 Then
                    isPrime = False
                    Exit For
                End If
            Next j
            
            If isPrime Then
                total = total + i
            End If
        End If
    Next i
    
    SumPrimesInRange = total
End Function
VB

呼び出し例

Sub TestSumPrimes()
    Dim result As Long
    
    result = SumPrimesInRange(10, 50)
    MsgBox "10~50の素数の合計は " & result
End Sub
VB

実行結果

  • 10~50の素数は 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47
  • 合計は 311

ポイント

  • 配列を返す代わりに「合計値」を返すので、戻り値の型は Long にしています
  • 素数判定は「2~√nまで割り切れるか」をチェックする方法で効率的
  • 範囲を変えれば「100~200の素数の合計」なども簡単に計算可能

👉 この関数を応用すれば「素数の平均値」や「素数の個数」を返す関数も作れます。

VBA
スポンサーリンク
シェアする
@lifehackerをフォローする
スポンサーリンク
タイトルとURLをコピーしました