- 締切済み
ACCESSのDLOOKUPについて
ACCESS超初心者です。クエリーでDLOOKUP関数を使って式を作っていますが、エクセルのLOOKUP関数のように使いたいのです。DLOOKUP関数は参照する値が一致しないと表示しません。LOOKUP関数は検査範囲として検査値を検索し、検査値が見つかると、配列の次の行または列の同じ位置にあるセルに含まれている値を返します。簡単な表を使うと A B 10 100 20 200 =LOOKUP(10,A1:A2,B1:B2) であれば100が表示されます。エクセルのLOOKUP関数ならここで10を11や12になおしても100と表示されます。しかしアクセスのDLOOKUP関数はこのような範囲をつけられません。10から19までなら100、20以上なら200と表示する方法はあるのでしょうか。初心者なのでVBやSQLなどの高度な技はわかりません。ご指導お願いします。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- 4500rpm
- ベストアンサー率51% (3224/6314)
すいません#1の補足です。 =Int()だと小数点以下しか切り捨てられないので、 =(Int(値/10))*10 に訂正して下さい。 エクセルのROUNDDOWNに当たるのがなかったと思いますのでこのような式になります。
- 4500rpm
- ベストアンサー率51% (3224/6314)
アクセス2000ですがDLOOKUP関数はフォームではエクセルと同じ動きでしたよ。 テキストボックスのコントロールソースに =DLookUp("A","テーブル1",11) と入れる。 テーブル1には質問の簡単な表を入れている。 表示は100でした。 質問の方が具体的にどのような目的で使うのかわかりませんが、エクセルでLOOKUPを使うのはセルの値によって別の表を参照してその値を示すときに使うと私は思っているのですが、それをクエリーを使ってするのがアクセスだと思います。 そういう使い方なら、クエリーでAのフィールドの抽出条件に=Int()を入れてやってみて下さい。(カッコ内は値またはフォームのフィールド名)
補足
私のアクセスは97なのですがそれが原因なのでしょうか。 多分質問の仕方がまずかったのでしょう。もういちど説明します。テーブル1に A B 10 100 20 200 となっています。そしてクエリーでそのテーブル1を表示させAとBのフィールドをそのまま追加しそのとなりのフィールドにDLOOKUP関数で式をつくります。DLOOKUP関数のヘルプをみて式をつくります。DLookup("A", "テーブル1","B= 100")そうすれば式1フィールドには10と表示されます。しかし汎用性がないのでヘルプをみてDLookup("A", "テーブル1", "B = " & [])とします。クエリーをひらくとパラメータの入力と聞いてきます。100と入力すれば10、200と入力すれば20と表示します。しかし105と入力しても何も表示されません。105と入力したら10(または20でも可)としたいのです。(250と入力したら20etc) 長くなりましたがよろしくお願いします。 追加になりますが4500rpmさんの言っているテキストボックスのコントロールソースに =DLookUp("A","テーブル1",11) を入力するというのはどういうことなのでしょうか。テキストボックスはフォームにあるんですよね。フォームのテキストボックスにこのように入力しても0しか表示されません。そもそもこの時のフォームのテキストボックスは値を入力するためのボックスですよね(ちがうのでしょうか) 変な解釈していたらすいません。