2017-08-11 4 views
2

私は約20列のクエリを持っており、最後の列に最大量を取得したい。 iif(a>b,a,iif(b>c,b,c))を試しましたが、abcはいずれの注文でも表示されていないため動作しません。
私が使用できる数式はありますか?アクセスクエリ - いくつかの列のmaxiumを取得する方法

enter image description here

+0

クエリコードを含める場合は、さらに手助けすることができます。 – Rominus

答えて

2

次のユーザー定義関数(UDF)を使用することができます:あなたのVBAモジュールMyFnc(それはそれを作成し、存在しない場合)と、使用中にそれを置く

Function Max(ParamArray a() As Variant) As Variant 

    Max = Empty ' return value in case of no supplied parameters 
    Dim i As Integer 
    For i = LBound(a) To UBound(a) 
     If i = LBound(a) Then 
     Max = a(i) 
     Else 
     If Max < a(i) Then Max = a(i) 
     End If 
    Next i 

End Function 

をその結果は

Max(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t) 

となります。これは20列の使用に適しています。

+1

こんにちはMiroxlavさん、ありがとうございました!私はただの不思議がありますが、私はコーディングの背景を持っていないことに注意してください。私がここで間違ったことを述べた場合、私に知らせてください。上記のiif関数については、私の元の例をとります。最大値はd = $ 30ですが、関数は最小値から最大値にソートされていないため、b = $ 20を与えるように感じます... wouldnそれ? – CW110

+0

@miroxlavまた、標準のモジュール名に関数名を接頭辞として付けると、少なくともVBA構文が無効です(少なくともAccessでは)。 publicと宣言されている限り、「Max(a、b、c、d、e、f、g、h、i、j、k、l、m、n、o、p 、q、r、s、t) ' –

+0

@CPerkins - もう一度ありがとうございます。私はコードからの呼び出しをテストしたが、クエリからの呼び出しはテストしなかった。今私は13年前、私がAccessで広範囲にプログラムを作成したとき、それがあなたのように働いたことを思い出します。 – miroxlav

関連する問題