excel中,如何返回与对应数据最接近的对应单元格的数据???

假设A列为数值,B列为数值,C列为数据。现在在D列中,查找与列B最接近的列A的值,并返回对应的列C里面的数据,怎么做?还有一个条件,就是接近程度不能超过X,否则返回空值。用函数可以实现吗?例:
A列
207.50
220.35
237.03
245.13
258.00
350.00
432.50
B列
263.18
270.00
275.89
301.00
281.85
148.05
154.70
C列
a
b
c
d
e
f
g
因为B1=263.18,在A列中与B1最接近(也就是差的绝对值最小)的是258.00,那么对应的C列的值是‘e’,即在D1中返回‘e’。还有一个条件就是B列中的值和A列中的值最接近的两个数只差不能大于20.如何实现??在线急等。看不明白和不会的不要来凑数,谢谢。。整个过程只能用公式实现,不要用宏编辑。。。感激不尽!!
zipall 的正确了。。我这里又有个问题,能帮忙处理一下吗?结果里面出现了3个‘e’,因为B1、B2、B3跟‘e’对应的A列的值都满足条件小于20,现在我这里要求只返回一个跟A列数值最接近的对应的C列的值,即只在D1返回‘e’,D2、D3都返回空,怎么实现??弄好了追加30分!!
不行也…………返回一长串 eeee ;还是不行也…………返回一长串 aaaaaaaa 加油哦!!!你已经看到曙光了 哥们啊,拜托你先实际运算一下嘛,这次又是一长串 啊啊啊啊啊啊

第1个回答  推荐于2016-02-20
数组公式,输入后按ctrl+shift+enter完成。

=IF(MIN(ABS($A$1:$A$7-B1))>20,"",INDEX($C$1:$C$7,MATCH(MIN(ABS($A$1:$A$7-B1)),ABS($A$1:$A$7-B1),)))

对补充问题的回复:
选中D1:D7
输入数组公式
=IF(ROW($1:$7)=MATCH(1,0/MMULT(--(ABS(TRANSPOSE($A$1:$A$7)-$B$1:$B$7)=MIN(ABS(TRANSPOSE($A$1:$A$7)-$B$1:$B$7))),ROW($1:$7)^0)),INDEX($C$1:$C$7,MATCH(1,0/MMULT(--(ABS($A$1:$A$7-TRANSPOSE($B$1:$B$7))=MIN(ABS($A$1:$A$7-TRANSPOSE($B$1:$B$7)))),ROW($1:$7)^0))),"")

输入后按ctrl+shift+enter完成。

我试过没有问题,如果有疑问可以加我百度hi。本回答被提问者采纳
第2个回答  2009-01-08
用一个公式很难,我是没想出来,我的想法是分两步走,

1,在D1中输入数组公式(楼上的公式)
=IF(MIN(ABS($A$1:$A$7-B1))>20,"",INDEX($C$1:$C$7,MATCH(MIN(ABS($A$1:$A$7-B1)),ABS($A$1:$A$7-B1),)))

2,在D2中输入数组公式

=IF(MIN(ABS($A$1:$A$7-B2))>20,"",IF(COUNTIF($D$1:D1,INDEX($C$1:$C$7,MATCH(MIN(ABS($A$1:$A$7-B2)),ABS($A$1:$A$7-B2),)))>0,"",INDEX($C$1:$C$7,MATCH(MIN(ABS($A$1:$A$7-B2)),ABS($A$1:$A$7-B2),))))

再把D2向下填充即可
第3个回答  2009-01-08
一楼肯定不对。TRUE只能查到第一个相似的,你把350改成276,第三行结果就是错的。
第4个回答  2009-01-08
=IF(ABS(VLOOKUP(B1,$A$1:$C$7,1,TRUE)-B1)<=20,VLOOKUP(B1,$A$1:$C$7,3,TRUE),"")
相似回答