「指定セルの値より小さい最近接素数」を求めるエクセルユーザー定義関数の紹介
Excelのユーザー定義関数を利用して、特定の計算や処理をカスタマイズする方法は多々あります。今回は、指定したセルの値より小さい最も近い素数を求める関数を紹介します。
関数の特徴
この関数の主な特徴は以下の通りです。
- 動的に指定セルの値を基に素数を計算
- 返される素数は指定セルの値より必ず小さい
関数コードの登録の仕方
このユーザー定義関数をExcelに取り入れる方法をステップごとに解説します。
- `Alt` + `F11` キーを同時に押して、VBAエディタを開きます。
- エディタの上部メニューから「挿入」を選び、「標準モジュール」をクリックして次の節にある新しいモジュールをコピーペーストで追加します。
- VBAエディタを閉じます。
挿入するコード
以下は「指定したセルの値より小さくてて最も近い素数を表示するユーザー定義関数」となる「PreviousPrime関数」のコードです。
Function PreviousPrime(n As Double) As Double Dim isPrime As Boolean Dim i As Double, j As Double If n <= 2 Then PreviousPrime = "N/A" Exit Function End If i = Application.WorksheetFunction.Floor(n, 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 isPrime And i < n Then PreviousPrime = i Exit Do End If i = i - 1 Loop End Function
関数の利用方法
コードを登録したら、Excelのシート上でこの関数を利用する手順は次のとおりです。
- 計算を行いたいセルを選択します。
- 「関数の挿入」ボタンをクリックします。
- 「ユーザー定義」カテゴリを選択します。
- 作成した関数「PreviousPrime」を選び、OKをクリックします。
- 関数ウィザードに従い、引数として評価したいセルを指定します。
- OKボタンで確定します。
関数の実行結果
関数を適用すると、指定したセルの値より小さい最も近い素数がそのセルに表示されます。たとえば、「15」という値を持つセルにこの関数を適用すると、「13」が返されます。
たとえば上記のサンプルですと、セルA1へ「10000」を入力し、セルA2へ「1つ上のセルの値より小さくて最も近い素数」の式を入れました。
また、この情報はオートフィルで連続コピー処理ができます。下にコピーすれば「1つ上のセルの値より大きくて最も近い素数」を連続化できますね。
使用時の注意点
この関数を活用する上での注意点を以下に示します。
- 2以下の数値を入力した場合、エラーが返されます。
- 関数は素数を求める際に総当たりの方法を利用しているため、大きな数値の場合は計算に時間がかかることがあります。
コメント