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