如何找最接近目标值的函数?
蒋春阳
创作者俱乐部成员
背景:在一列杂乱无章的数列中,查找距离给定目标值最接近的数值?如图所示:
| A列 | B列 |
1 | 数列 | -12 |
2 |
| 201 |
3 |
| 589 |
4 |
| 12 |
5 |
| 20 |
6 |
| 21 |
7 |
| 40 |
8 |
| 48 |
9 |
| 56 |
10 |
| 72 |
11 |
| 102 |
12 |
| 109 |
13 |
| 96 |
14 | 目标值: | 45 |
15 | 最接近目标的数值: |
|
分步骤解析:
遇到这个问题,我的常规情况思路会是添加辅助列,取数列与目标值的差值,找到对应差值中绝对值最小的那个,那么最接近目标的数值就找到啦~~
当然,没毛病,这个思路是对的,只不过需要添加辅助列,且一旦目标值发生变化,还需要重新进行肉眼识别查找,费时费力,还存在出错的风险;那么,咱们还是这个思路,用数组来试一试呢?
第一步:取数列中各数据距离目标值的长度,使用数学中的绝对值函数:ABS(B1:B13,$B$14)其中,目标值位置固定,采用绝对引用。
第二步:查找距离目标值的最小长度是多少,这个就是大家熟知的最小值函数啦:MIN(ABS(B1:B13,$B$14))。
第三步:筛选距离目标值长度最小的数据,当然非FILTER函数莫属啦,即在B1:B13数列中查找,FILITER(B1:B13,ABS(B1:B13,$B$14)=MIN(ABS(B1:B13,$B$14)))。
这时候,随便改目标值,最接近目标的数值将会随之变化,是不是很便利呢?当然,如果数列有增加或减少,仅需要随之改变公式中数列的位置即可。
注意:数据中含有数组,记得用CTRL+SHIFT+ENTER三键组合运行哦~~
创作者俱乐部成员
WPS函数专家
创作者俱乐部成员
WPS函数专家
创作者俱乐部成员
创作者俱乐部成员
创作者俱乐部成员
WPS函数专家
创作者俱乐部成员