从excel表中查找正确的范围

时间:2017-01-03 16:30:48

标签: excel excel-vba excel-2010 vba

Image from the table

使用视觉基本编码或某些Excel功能找到行驶里程的正确列的最佳方法是什么,并从该列返回价格?这里不能使用HLOOKUP,因为查找值不准确,表中的范围也没有特定的间隔(如果是,我可以使用例如FLOOR(travelled miles/100)*100并找到价格HLOOKUP)。显然,使用小桌子手动查找价格很容易,但使用大桌面电脑会更快。

1 个答案:

答案 0 :(得分:0)

请注意,如果x介于ab之间,那么MEDIAN(x,a,b)=x。将其与一些嵌套的IF结合起来:

=IF(MEDIAN(B5,B1,C1-1)=B5,B2,IF(MEDIAN(B5,C1,D1-1)=B5,C2,IF(MEDIAN(B5,D1,E1-1)=B5,D2)))

我在手机上,所以只做了前三个案例,但希望你能看到它是如何继续的。

(应该注意你需要删除破折号才能工作)

修改

我也想在上面的评论中回答你的问题。您可以使用以下内容来保留破折号,但可以使用数字。

假设单元格A1的值为10-。我们可以使用FIND函数计算-出现的位置,然后使用LEFT函数仅返回破折号之前的字符:

=LEFT(A1,FIND("-",A1)-1)

这将返回值10,但它会将其作为字符串返回,而不是数字 - 基本上Excel会认为它是文本。要强制Excel将其视为数字,我们可以简单地将该值乘以1。因此,我们的公式变为:

=(LEFT(A1,FIND("-",A1)-1))*1

您可能还会看到人们使用双减号,如下所示:

=--LEFT(A1,FIND("-",A1)-1)

我不推荐这个,因为它有点复杂,但结合上面的公式会给出:

=IF(MEDIAN(B5,--LEFT(B1,FIND("-",B1)-1),--LEFT(C1,FIND("-",C1)-1)-1)=B5,B2,IF(MEDIAN(B5,--LEFT(C1,FIND("-",C1)-1,--LEFT(D1,FIND("-",D1)-1-1)=B5,C2,IF(MEDIAN(B5,--LEFT(D1,FIND("-",D1)-1,--LEFT(E1,FIND("-",E1)-1-1)=B5,D2)))