下表是一家快递公司的价目表。询价时,很多条件,如产地、目的地、重量面积等。会被牵扯进来。在所有的条件都被判断出来之后,必须与最低价进行比较,才能得到它们之间的最大值。
价格表如下:
查询表如下:
比如产地是义乌,目的地是北京,重量是1680.57,对应的价格是1.6。金额为:=1680.57*1.6。计算金额后,与最低价200进行比较,取最大值,即=MAX(1680.57*1.6,200)。
对于多条件搜索问题,LOOKUP函数是首选的,其语法为:
=LOOKUP(1,0/((条件1)*(条件2)),返回区域)
先解决最低价的问题。这个比较简单。
=LOOKUP(1,0/((B2=价目表!$3:澳元$24澳元)*(FIND(C2,价目表!$B$3:$B$24))、价目表!3:牙买加元24牙买加元)
区间内的单价比较麻烦,需要先判断是在哪个区间。
为了便于判断哪个区间,在第一行写下每个区间的下限。
有了下限之后,就可以用MATCH函数的模糊搜索来判断它在哪个列了。
=MATCH(A2,价目表!1:加元1美元)
然后使用OFFSET函数来引用该列的区域。当OFFSET函数引用一个区域时,公式不能直接写在单元格中,所以看不到效果。
OFFSET(价目表!$B$3:$B$24,0,MATCH(A2,价目表!1:加元1美元)
可以查询单价。
=LOOKUP(1,0/((B2=价目表!$3:澳元$24澳元)*(FIND(C2,价目表!$ b $3: $ b $24))、抵销(价目表!$B$3:$B$24,0,MATCH(A2,价目表!1:加元1美元)
单价出来后,金额也会出来。
=A2*LOOKUP(1,0/((B2=价目表!$3:澳元$24澳元)*(FIND(C2,价目表!$ b $3: $ b $24))、抵销(价目表!$B$3:$B$24,0,MATCH(A2,价目表!1:加元1美元)
将最低价格与金额进行比较,以获得最大值。
=最大值(E2,F2)
最后,所有的公式被合并,并用ROUND函数嵌套。
=ROUND(MAX(LOOKUP)(1,0/((B2=价目表!$3:澳元$24澳元)*(FIND(C2,价目表!$ b $3: $ b $24))、抵销(价目表!$B$3:$B$24,0,MATCH(A2,价目表!$ c $ 1: $ I $ 1))* a2,查找(1,0/((B2=价目表!$3:澳元$24澳元)*(FIND(C2,价目表!$B$3:$B$24))、价目表!3:牙买加元24牙买加元),2)
这个公式涉及的函数很多,不容易理解。你可以试着把它们分开并结合起来,这样更容易理解。