excel - 从 A 列 Excel 数组公式中查找 C 列中最接近的值
问题描述
我在 A 列中有数字,在 B 中有相应的代码。现在对于 CI 中的数字,想在 A 中搜索每个最接近的值并显示其 B 的值。所以我在 D2 中使用以下数组公式,它几乎适用于所有情况,但为 C 列中的最后一个值打印错误值 (38909)。A 列中与 38909 最接近的值为 38909,其相关代码为 PUK,但正在打印与值 3890947021 相关的 JIM。
请有人帮我修复公式以匹配此表中的所有案例。谢谢
我的公式是:
=IF($C2="","",IFERROR(LOOKUP(9.99999999999999E+307,
SEARCH(IF(LEN($A$2:$A$15)>LEN($C2),"|"
&LEFT($A$2:$A$15,LEN($C2)),"|"
&$A$2:$A$15),"|"&$C2),
$B$2:$B$15),"NOT FOUND"))
桌子
[A] [B] [C] [D] [E]
CC CODE NUMBERS RESULT NOW RESULT EXPECTED
237 CMR 18763044 JAM JAM
230 MUS 187635 JAM JAM
61 AUS 23092 MUS MUS
31 NLD 3162 NLD NLD
599 ANT 38050 NOT FOUND NOT FOUND
358 FIN 33 FRA FRA
33751 FRA 49185 NOT FOUND NOT FOUND
65 SGP 51078 NOT FOUND NOT FOUND
1721 SXM 1246 BRB BRB
1876 JAM 389094702 JIM JIM
81 JPN 38909 JIM PUK
124622 BRB
38909 PUK
3890947021 JIM
更新
几个小时后,如果 A 列中的值按升序排序,我就能得到这个公式。
=IF($C2="","",IFERROR(
LOOKUP(9.99999999999999E+307,
SEARCH(
IF(OR($A$2:$A$15=$C2),"|"&$A$2:$A$15,
IF(LEN($A$2:$A$15)>LEN($C2),
"|"&LEFT($A$2:$A$15,LEN($C2)),
"|"&$A$2:$A$15)),
"|"&$C2),$B$2:$B$15),"NOT FOUND"))
感谢您的意见。
解决方案
如果我正确理解你的公式,它会完全按照它应该做的。问题是 38909 在 3890947021 中。对于 38909,您的公式有两个可能的匹配项,所以它给您最后一个。如果您更改 A 列和 B 列中的顺序,例如:
[A] [B]
CC CODE
237 CMR
230 MUS
61 AUS
31 NLD
599 ANT
358 FIN
33751 FRA
65 SGP
1721 SXM
1876 JAM
81 JPN
124622 BRB
3890947021 JIM
38909 PUK
您将获得数字 3890947021 和 38909 的 PUK。我看到的唯一方法是在公式中添加另一个条件,该条件将检查 A 列中是否存在完全匹配,但如果顺序相反,它仍然无法解决您的问题.
推荐阅读
- ruby-on-rails - 将activerecord保存在DB上时,如何使Rails使用属性的getter方法?
- mysql - 从列创建对而不重复值
- c# - 如何根据另一个列表中一个属性的所有值过滤 linq 查询
- javascript - 如何访问不同 js 文件中的用户对象
- python - AWS 机密管理器仅从 RDS 集群返回主主机。从主机不返回
- sql - 在 Oracle 中查询特定的时间戳格式
- javascript - I cant use index of in localStorage
- ios-simulator - Xcode 模拟器 10.2 版第一次启动非常慢
- jquery - 使用 css 将纸张大小设置为 A5 在谷歌浏览器页面打印中不起作用
- php - 缺少 HTML POST 小于 ( < ) 和大于 ( > ) 的特殊字符