返回列表 上一主題 發帖

請問有數筆不同值的考試分數!如何設定函數找出最接近50分的人名呢!

回復 9# ANGELA


喔..原來如此..
智慧真是無價啊..
又學到一種算法了..
也對LOOKUP多一層了解了..
以前都不知道可以這樣用這個函數..
感恩..

TOP

回復 10# Hsieh


感謝版主的詳細分欄圖解
在解說與圖解兩相對照下
終於弄明白了
以後也可以採用這種方式去理解公式
感恩..

TOP

不同人有不同的方法!但都是好方法!感謝各位大大解決小弟的問題!謝謝

TOP

早先對lookup的認識,只能作些單純的運算,功能甚至比不上vlookup。
大約5、6年前,新加坡的Bosco_yip掀起了一陣lookup的探討旋風,使lookup用在更高階的功能上。
可惜當時醉心於auto cad,對excel冷了下來,無心關注,現在大家會的我都不會了!
此例為何要^2?沒有^2就不能得到正確答案,有朋友撥冗為我說明一下嗎?

TOP

正正得正
負負得正
學海無涯_不恥下問

TOP

謝謝,用ABS郤不能得到相同效果,原因安在?

TOP

回復 16# oobird


ABS也行,只須輸入為陣列公式..

TOP

ABS仍可達到相同效果啊!
=LOOKUP(2,1/((MIN(ABS(50-B1:B11)))=ABS(50-B1:B11)),A1:A11)
1/((MIN(ABS(50-B1:B11)))=ABS(50-B1:B11))
傳回是1/FALSE或1/TRUE的陣列
就傳回#DIV/0!或1的陣列
只要第1個參數大於1就能找到最後一個1的對應值
學海無涯_不恥下問

TOP

本帖最後由 oobird 於 2010-10-2 07:38 編輯

但…正如樓上名字很難唸的仁兄所言,要用陣列輸入才能成功呀!
如果用陣列公式,這裡lookup就失去優勢了。

TOP

謝謝論壇,謝謝各位前輩
後學藉此帖練習VBA陣列與字典,學習方案如下,請各位前輩指教

執行結果:



Option Explicit
Sub TEST()
Dim Brr, Y, i&, b#
'↑宣告變數
Set Y = CreateObject("Scripting.Dictionary")
'↑令Y變數是 字典
Brr = Range([B1], Cells(Rows.Count, 1).End(3))
'↑令Brr變數是 二維陣列,以儲存格值帶入
For i = 1 To UBound(Brr)
'↑設順迴圈!
   b = Abs(50 - Brr(i, 2))
   '↑令b變數是 50減 Brr第2欄陣列值後,Abs()轉為正值
   Y(b) = Trim(Y(b) & " " & Brr(i, 1) & "(" & Brr(i, 2) & ")")
   '↑令以b變數當key,item是自身連接Brr陣列第1.2欄陣列值
Next
MsgBox Y(Application.Min(Y.KEYS))
'↑令跳出提示窗 顯示: 以Y字典裡最小的key值回傳的item值
Set Y = Nothing: Erase Brr
'↑令釋放變數
End Sub
用行動裝置瀏覽論壇學習很方便,謝謝論壇經營團隊
請大家一起上論壇來交流

TOP

        靜思自在 : 靜坐常恩己過、閒談莫論人非。
返回列表 上一主題