過去ログ

                                Page     167
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
   通常モードに戻る  ┃  INDEX  ┃  ≪前へ  │  次へ≫   
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 ▼最大値の求め方  goo 03/1/21(火) 10:40
   ┗Re:最大値の求め方  イケガミ 03/1/21(火) 13:32
      ┗Re:最大値の求め方  goo 03/1/22(水) 12:34

 ───────────────────────────────────────
 ■題名 : 最大値の求め方
 ■名前 : goo
 ■日付 : 03/1/21(火) 10:40
 -------------------------------------------------------------------------
   こんにちわ、よろしくお願いします。

testというテーブルがあったとします。
名前、国語得点、英語得点、数学得点、最高得点フィールドで構成されていて、
名前、国語得点、英語得点、数学得点にデータが入っています。
国語得点、英語得点、数学得点のなかから最高得点を最高得点フィールドに出力する
ということをaccessでできるのでしょうか?

 ───────────────────────────────────────  ■題名 : Re:最大値の求め方  ■名前 : イケガミ <ikegami_kumamoto@dosule.com>  ■日付 : 03/1/21(火) 13:32  -------------------------------------------------------------------------
   >国語得点、英語得点、数学得点のなかから最高得点を最高得点フィールドに出力する

比較対象の項目(フィールド)が3つ程度ならIIF 関数を使ってもできると
思いますが、VBA質問箱ですので自作関数を使う方法を...

【コード例】
-----------------------------------------------------------------
Function GetMax(ParamArray varData() As Variant) As Variant

  Dim lngArray  As Long
  Dim lngIdx   As Long
  Dim lngMax   As Long

  lngArray = UBound(varData)

  If lngArray = -1 Then
    lngMax = ""
  Else
    lngMax = varData(0)
  End If

  For lngIdx = 0 To lngArray
    If lngMax < varData(lngIdx) Then
      lngMax = varData(lngIdx)
    End If
  Next

  GetMax = lngMax
  
End Function
-----------------------------------------------------------------

【クエリでの使用例】
SELECT TableName.国語, TableName.英語, TableName.数学,
  GetMax([国語],[数学],[英語]) AS 最大値
FROM TableName;

でできると思います。
お試しください。

 ───────────────────────────────────────  ■題名 : Re:最大値の求め方  ■名前 : goo  ■日付 : 03/1/22(水) 12:34  -------------------------------------------------------------------------
   イケガミ さん、ありがとうございます。
配列を使うわけですね。早速試してみます。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━    通常モードに戻る  ┃  INDEX  ┃  ≪前へ  │  次へ≫    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━                                 Page 167