• 締切済み

EXCELにあってaccessにない関数について

エクセルにはあるのにアクセスにない関数は、どうすれば使えるようになりますか?使いたい関数はLnです。アクセス2003初心者なのでよろしくお願いします。また、計算処理結果をテーブルレコードに入れたいのですが、どうすればよいか教えてください。

みんなの回答

  • Dxak
  • ベストアンサー率34% (510/1465)
回答No.4

色々、手はありそうですが・・・Excelと限定すれば・・・ 標準モジュールに Function usLn(a As Double) As Double Dim xlApp As Object Set xlApp = CreateObject("Excel.Application") usLn = xlApp.WorksheetFunction.Ln(a) Set xlApp = Nothing End Function を記載して関数として使用することは可能です しかし、Excelが導入されている前提なのと、AccessからExcelを呼び出していることから、反応が鈍いかな? Lnであれば・・・ Ln(X) = Log(X)/Log(e) = Log(X)/Log(2.71828182845904) で、実現したほうが早いから・・・ 直接書き込むか? Function usLn(a As Double) As Double usLn = Log(a) / Log(2.71828182845904) End Function と、関数化した方が良いかも^^; で、テーブルに書き込むのは、更新クエリで行うか?VBAでループさせるか次第かな?

noname#140971
noname#140971
回答No.3

次は、イミディエイトウィンドウでのLOG関数自身のテストとテーブルの更新、追加のテスト結果です。 UPDATE文で ID=1 のレコードの計算結果を更新しています。 INSERT INTO 文で ID=3、計算結果=LOG(86) のレコードを追加しています。 [イミディエイト] ? LOG(86) 4.45434729625351 ? LOG(2.7182818) 0.999999989530502 ? log(exp(3)) 3 ? CnnExecute("UPDATE TEST SET 計算結果=" & LOG(86) & " WHERE ID=1;") True ? CnnExecute("INSERT INTO TEST (ID, 計算結果) VALUES (3," & LOG(86) & ");") True <Test> ID____計算結果 1_____4.45434729625351 2_____0 3_____4.45434729625351 CnnExecute 関数は、Access では提供されていません。 が、その実体は、ADODB.Connection の Execute メソッドで指定の SQL文を実行するものに過ぎません。

  • m3_maki
  • ベストアンサー率64% (296/460)
回答No.2

Log という関数があります。 > 計算処理結果をテーブルレコードに入れたいのですが どのような状況か分からないと答えにくいです。

noname#97729
noname#97729
回答No.1

アクセスは使ったことがないのですが、 ユーザー定義関数で関数が作れるようです。 どのようにしたら Ln 関数 が作れるか分からないのですが、 自作してみてはどうでしょう。 http://www.moug.net/tech/acopr/0120018.htm