作业帮 > 综合 > 作业

求助excel!如何查找特定数据域中,最接近某个数据的值

来源:学生作业帮 编辑:拍题作业网作业帮 分类:综合作业 时间:2024/06/16 00:14:53
求助excel!如何查找特定数据域中,最接近某个数据的值
数据源 需查找的列 结果列
A列 B列 C列 D列 F列
1 aa bb cc
2 23:20:55 18:10:18 22:38:37 21:31:55
3 22:45:49 17:00:50 22:30:52 21:23:15
4 21:41:16 16:12:50 22:27:14 21:21:38
5 20:50:02 16:06:46 22:24:14 21:02:08
6 19:55:27 14:41:24 22:20:58 20:59:07
7 19:36:14 14:27:39 22:03:06 20:04:44
8 18:44:02 14:16:06 21:31:55 19:38:56
9 18:39:07 14:11:05 21:23:15 17:23:55
比如数据表是这样的,A、B、C是我本来有的数据源,格式都是时间的,有一组数据D列,需要从ABC列中找出与D列中每一个单元格中的数据最接近的数据,然后在F列中返回列名,如果最接近的数据大于20分钟,则返回无结果.
如D2,则F2的结果是cc,如D7,则F7的值为无结果
F2中输入
=IF(MIN(ABS(A2:C2-D2))>--"0:20","无结果",INDEX($1:$1,MATCH(MIN(ABS(A2:C2-D2)),ABS(A2:C2-D2),)))
同时按下CTRL+SHIFT+回车,输入数组公式,用自动填充柄下拉.
可以参照附件.
不过D2的21:31:55,与前面那些不是都相差20分钟以上么,怎么会返回CC的呢?
再问: 谢谢大侠,我尝试了下,但是有个问题,D列中的数值我需要跟ABC列中的每一个单元格的数据相比,而不是只比较那一列,有木有办法啊,有些列我可能有空格,比如说C列中的最后一个数据,可能是空,有没有可能把空值有去掉呢?
再答: =IF(AND(ABS(I2-A$2:F$30)-"0:20">0),"无结果",OFFSET(A$1,,MAX((MIN(ABS(I2-A$2:F$30))=ABS(I2-A$2:F$30))*COLUMN(A:F))-1))根据实际最大行数自己调整公式中单元格的引用。采用这个公式,将空单元格默认为0:00,如果I列不存在23:40——0:20之间的时间,用这个公式就OK;如果存在,公式就要进一步修改为:=IF(AND(ABS(I2-IF(A$2:F$30="",I2+"0:30",A$2:F$30))-"0:20">0),"无结果",OFFSET(A$1,,MAX((MIN(ABS(I2-IF(A$2:F$30="",I2+"0:30",A$2:F$30)))=ABS(I2-IF(A$2:F$30="",I2+"0:30",A$2:F$30)))*COLUMN(A:F))-1))也就是将前面的公式中的A$2:F$30替换为:IF(A$2:F$30="",I2+"0:30",A$2:F$30),以规避空单元格出现的问题。【另外】纠正你的一个错误:EXCEL中,一列指的是竖向,一行指的是横向,这和我们日常生活习惯是一致的。