2017-08-11 71 views
2

我在查詢中有大約20列,並且想要獲得最後一列中的最大值。我試過iif(a>b,a,iif(b>c,b,c))但它不起作用,因爲a,b,c沒有按任何命令列出。
請問有什麼配方可以使用嗎?訪問查詢 - 如何獲得多個列的最大值

enter image description here

+0

如果包含查詢碼,我們將能夠更好地爲您提供幫助。 – Rominus

回答

2

您可以使用下面的用戶定義函數(UDF):

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 

把它放到你的VBA模塊MyFnc(如果它不存在,創建它)和使用其結果爲

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美元,因爲一個e不是從最小到最大排序的...... wouldn是嗎? – CW110

+0

@miroxlav此外,無效的VBA語法(至少在Access中)將標準模塊名稱作爲函數名稱的前綴。只要它是公開的,直接調用它就沒有任何限制:'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