• ベストアンサー

VBAでベッセル関数を使う方法

VBAを使っていて第二種ベッセル関数を使いたいのですが worksheetfunctionだと計算に時間がかかるため これを使わずに計算する方法を教えてください、 以前、どこかのwebページで近似式を見かけたような気がするのですが どこかに書かれてあるページがあれば教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • DreamyCat
  • ベストアンサー率56% (295/524)
回答No.1

ベッセル関数も第二種ベッセル関数も数式はまったく理解できないのですが ネット検索で見たこのベッセル関数式の場合、セルに書き出すのですが 100行目まで、I列までだと 当方の7年ほど前の古いノートPC(CeleronM 1.86Ghz)でも グラフ描画を含めて0.2秒かからずに終わります。 http://homepage3.nifty.com/rikei-index01/excel/excelbessel.html 科学技術計算などで膨大な量だとだめかもしれませんが 計算結果だけなら0.1秒でセルに書き出されます。  マクロの記録だけくらいなのでもっときちんと書いたほうがいいのですが。  dim i as single Application.ScreenUpdating = False Range("C6:I100").ClearContents ' Range("c6").Activate ActiveCell.FormulaR1C1 = "=BESSELJ(RC2,R5C)" Range("C6").Select Selection.AutoFill Destination:=Range("C6:C100") Range("C6").Select Selection.AutoFill Destination:=Range("C6:I6"), Type:=xlFillDefault Range("C6:I6").Select Selection.AutoFill Destination:=Range("C6:I100") Range("B5").Select Application.ScreenUpdating = True For i = 0.1 To 1 Step 0.1 Range("b7").Value = i Range("B6:B7").AutoFill Destination:=Range("B6:B100") Next 10回書き換えで2.1秒ほどかかりました。 関数も得られたデータもどうつかうのかわかりませんが お役に立てれば。