Excelで前の非素数を探索: ユーザー定義関数の紹介
この記事では、Excelで指定された値より小さく、最も近い非素数を見つけるためのユーザー定義関数を紹介します。
この関数は、指定したセルの値より小さくて最も近い非素数を返します。
この関数の特徴
- 指定したセルの値より小さい最初の非素数を返します。
- 計算は効率的で、大きな数値でも迅速に結果を返すことができます。
- Excelの内蔵関数だけでなく、VBAの機能を利用しています。
関数コードの登録の仕方
1. Excelを開き、[開発]タブをクリックします。
2. [マクロ]ボタンをクリックし、VBAエディタを開きます。
3. [挿入] > [標準モジュール]を選択して、新しいモジュールを追加します。
4. 下記のコードをVBAエディタにコピー&ペーストします。ペースト後はVBAエディタを閉じます。
Function PreviousComposite(n As Double) As Double
Dim isPrime As Boolean
Dim i As Double, j As Double
If n <= 4 Then
PreviousComposite = "N/A"
Exit Function
End If
i = Application.WorksheetFunction.Floor(n, 1) - 1 ' 小数点を切り捨てて整数にし、1を引く
Do
isPrime = True
For j = 2 To Sqr(i)
If i Mod j = 0 Then
isPrime = False
Exit For
End If
Next j
If Not isPrime And i < n Then
PreviousComposite = i
Exit Do
End If
i = i - 1
Loop
End Functionユーザーは実行時にどんな操作をするのか
関数を使用するには、セルに「=PreviousComposite(セルの位置)」と入力します。例えば、A1セルの値を元に非素数を探索したい場合、「=PreviousComposite(A1)」と入力します。
もしくは「関数の挿入」ボタンから「ユーザー定義」カテゴリ「PreviousComposite」を選んでからA1セルを指定します。


関数を実行すると、指定されたセルの値より小さく、最も近い非素数がそのセルに表示されます。

この計算式はコピー対応です。

使用時の注意点
- 非常に小さな数値を評価する際には、適切な結果が得られない可能性があります。
- この関数はExcelのVBA機能を使用しているため、マクロの設定を有効にする必要があります。
コメント