我們在做數據分析時,經常會遇到數據匹配的問題,我們常用的數據匹配的函數有:VLOOKUP、HLOOKUP、XLOOKUP、index+match等等。大部分的數據查找和匹配問題都能通過以上函數解決。但是當我們遇到需要查找在某個區域內和目標值最近接的值時,以上函數就顯得捉襟見肘了。
此時我們就需要今天所講到的方法,自定義函數法。
自定義函數實現查找最近的值:
1、遍歷指定區域內的每一個單元格
2、計算單元格與目標值相減的絕對值
3、初始判斷函數結果是否有值,為空設置為當前迭代的絕對值只差
4、不為空判斷當前絕對值之差與之前保存的絕對值之差,如果當前絕對值差更小
5、替換臨時保存絕對值,直到所有的單元格都遍歷完成
以下為自定義函數代碼:
'查找source指定區域內最接近target的值Function?Closest(source?As?Range,?target?As?Range)????Dim?current?As?Range????For?Each?current?In?source????????tempDiff?=?Abs(current.Value?-?target.Value)????????If?IsEmpty(Closest)?Then????????????diff?=?tempDiff????????????Closest?=?current.Value????????End?If????????If?tempDiff?<?diff?Then????????????Closest?=?current.Value????????????diff?=?tempDiff????????End?If????NextEnd?Function