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機能を使用しているため、マクロの設定を有効にする必要があります。
コメント