我们有一个电话记录列表,并希望显示我们接听电话的位置。
这是我们现在拥有的示例数据集。
08/02/2013 12:36 441175085086 ANSWER 198
21/02/2013 15:51 441188398839 CANCEL 0
26/02/2013 19:11 anonymous ANSWER 21
05/03/2013 12:24 441144939783 ANSWER 61
07/03/2013 15:35 441144583012 ANSWER 324
现在我们有了另一张表,其中有效包含所有前缀和区号
44113 Leeds
44114 Sheffield
44115 Nottingham
44116 Leicester
44117 Bristol
44118 Reading
现在的想法是,我们只想显示区域名称。但是,如果它与前缀列表的开头不匹配,那么它将只是“匿名”
期望的结果是:
08/02/2013 12:36 441175085086 ANSWER 198 Bristol
21/02/2013 15:51 441188398839 CANCEL 0 Reading
26/02/2013 19:11 anonymous ANSWER 21 Anonymous
05/03/2013 12:24 441144939783 ANSWER 61 Sheffield
07/03/2013 15:35 441144583012 ANSWER 324 Sheffield
谢谢
最佳答案
VLOOKUP()
我相信这是正确的函数。
假设您希望 Sheet1 的 E 列中的区域名称与第 2 行相同,电话号码位于同一工作表的 B 列中,并且带有前缀和区号的表位于 Sheet2 的 A 列和 B 列中,您可以使用:
=VLOOKUP(LEFT(B2,5), Sheet2!A:B, 2, FALSE)
LEFT(B2,5)
从 B2 中存储的电话号码中提取前 5 个字符。如果有不同长度的区号,那么公式就得修改,而且会复杂很多。
Sheet2!A:B
是查找数据的表
2
是包含要获取的值的列的索引(第一个索引是包含区号的列)
FALSE
表示完全匹配。我认为您不想让区号立即小于您要查找的区号,因为您将无法找到匿名人士。
现在,对于那些无法找到的内容,您将获得#N/A
。将整个公式封装在 IFERROR()
中,如下所示:
=IFERROR(VLOOKUP(LEFT(B2,5), Sheet2!A:B, 2, FALSE), "Anonymous")
这应该可以解决问题:)
关于Excel:如果数字以选项中的值开头,则显示选项列表中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18112500/