-PR-
解決済み

ACCESSのMax(Min)関数使用方法

  • すぐに回答を!
  • 質問No.20635
  • 閲覧数4253
  • ありがとう数5
  • 気になる数0
  • 回答数5
  • コメント数0

お礼率 47% (69/146)

お忙しい中すいませんが、教えてください。

クエリーデザイン中で式ビルダを使って、最大値(最小値)を表示させるフィールドを作成する方法を検討しています。

例えば3つのレコードの中から最大値(最小値)を抽出して新しいフィールドに表示させたいのです。

簡単で良い方法があれば教えてください。
通報する
  • 回答数5
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

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

  • 回答No.4

先ほど回答した者ですが、答えた式が間違ってました。
多分下記でよいと思います。
最大点数: Choose(IIf(([国語]>=[算数] And [国語]>=[理科]),1,IIf([算数]>=[理科],2,IIf([理科]>=[国語],3,1))),[国語],[算数],[理科])
お礼コメント
kitaosa

お礼率 47% (69/146)

ありがとうございます。うまくいきました!でも科目数が多くなってくると式がみずらいですね。今後のことを考えて、別の方法(テーブル構造再考)もためしてみます。
投稿日時 - 2000-12-21 12:10:25
関連するQ&A
-PR-
-PR-

その他の回答 (全4件)

  • 回答No.1
レベル7

ベストアンサー率 52% (10/19)

式ビルダーを使わない方法?です。 クエリーデザイン中に表示->集計をチェックします。 最大値、最小値を求めたいフィールドを出して、 集計欄を最大、最小として、クエリーを実行します。 これでどうでしょう? ...続きを読む
式ビルダーを使わない方法?です。
クエリーデザイン中に表示->集計をチェックします。
最大値、最小値を求めたいフィールドを出して、
集計欄を最大、最小として、クエリーを実行します。

これでどうでしょう?
補足コメント
kitaosa

お礼率 47% (69/146)

すみません。質問内容に不備がありましたことお詫びいたします。

フィールド毎の最大値、最小値ではなく、1つのレコードのうちの各フィールドの中から選び出すという手順です。

例えば、リストの状態でAさん、Bさん、Cさん(名前フィールド)それぞれの国語フィールド、算数フィールド、理科フィールドの点数のうち、科目に関係なくAさん、Bさん、Cさんそれぞれの最大値、最小値の点数を抽出したいのです。

すみませんが、宜しくお願い致します。
投稿日時 - 2000-12-20 12:49:11


  • 回答No.2
レベル7

ベストアンサー率 52% (10/19)

ごめんなさい。現状のテーブル構造では簡単に要求事項を解決する方法が見つけられませんでした。 (VBAで書いてもいいなら別ですが・・・) テーブル構造を変更していいなら Name,Subject,Scoreからなるテーブルだと非常に簡単です。 NameをWhere条件に設定(抽出条件を名前) Scoreの集計を最大、最小 ...続きを読む
ごめんなさい。現状のテーブル構造では簡単に要求事項を解決する方法が見つけられませんでした。
(VBAで書いてもいいなら別ですが・・・)

テーブル構造を変更していいなら
Name,Subject,Scoreからなるテーブルだと非常に簡単です。
NameをWhere条件に設定(抽出条件を名前)
Scoreの集計を最大、最小
お礼コメント
kitaosa

お礼率 47% (69/146)

ありがとうございます。テーブル構造の見直しが必要かもしれませんね。考えてみます。
投稿日時 - 2000-12-21 12:11:51
  • 回答No.3

先に回答された方のようにテーブル構造を変えたほうが汎用性はあると思いますし、またVBAを使えばより簡単に実現できると思います。 が、あえて補足の例だけのフィールドだと仮定した場合、次のように式ビルダ内に入力すれば科目に関係無く最大値の点数がでます。最小値は不等号を逆にすれば解決すると思いますので、省きます。 最大点数: Choose(IIf([国語]>=[算数],1,IIf([算数]>=[ ...続きを読む
先に回答された方のようにテーブル構造を変えたほうが汎用性はあると思いますし、またVBAを使えばより簡単に実現できると思います。
が、あえて補足の例だけのフィールドだと仮定した場合、次のように式ビルダ内に入力すれば科目に関係無く最大値の点数がでます。最小値は不等号を逆にすれば解決すると思いますので、省きます。
最大点数: Choose(IIf([国語]>=[算数],1,IIf([算数]>=[理科],2,IIf([理科]>=[国語],3,1))),[国語],[算数],[理科])
  • 回答No.5
レベル13

ベストアンサー率 46% (643/1383)

自作関数を作ってもいいですね。 モジュールを新規作成して、下記の内容をコピー、貼り付けして、名前を付けて保存してください。(名前は何でも構いません。モジュールの内容が分からなくても大丈夫です。とにかく、コピー、貼り付けさえすれば動きます。) で、クエリの[フィールド]の部分に、 =ChooseMax([国語],[算数],[理科]) のように、比較するフィールドをコンマで区切って入力 ...続きを読む
自作関数を作ってもいいですね。

モジュールを新規作成して、下記の内容をコピー、貼り付けして、名前を付けて保存してください。(名前は何でも構いません。モジュールの内容が分からなくても大丈夫です。とにかく、コピー、貼り付けさえすれば動きます。)

で、クエリの[フィールド]の部分に、

=ChooseMax([国語],[算数],[理科])

のように、比較するフィールドをコンマで区切って入力してください。
これで、仰る機能が実現できるはずです。


----切り取り線----
Public Function ChooseMax(ParamArray Values() As Variant) As Variant
  Dim i As Long
  On Error Resume Next
  ChooseMax = Values(0)
  For i = 1 To UBound(Values)
    If Values(i) > ChooseMax Then
      ChooseMax = Values(i)
    End If
  Next i
End Function
----切り取り線----
お礼コメント
kitaosa

お礼率 47% (69/146)

大変ありがとうございました。

とりあえずやってみます!
投稿日時 - 2000-12-21 08:46:16
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
このやり方知ってる!同じこと困ったことある。経験を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


新大学生・新社会人のパソコンの悩みを解決!

いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ