Excel 索引/匹配/VLOOKUP协助

Excel 索引/匹配/VLOOKUP协助,excel,excel-formula,Excel,Excel Formula,下表是我正在研究的XLSX中的前29行,其主要目的是计算导出呼叫数据的成本 下表中的数据是PowerShell脚本填充的结果,该脚本将CSV中的费率数据(用于计算通话费用)与另一个CSV中客户每日通话统计数据中的通话数据相结合 费率数据: F列[目的地]包含所有已知的国家代码。 E列[费率]包含F列中每个国家/地区代码的费率值,用于计算结束时的通话成本 调用导出数据: C列[被叫人号码]包含被叫人的原始电话号码(被叫人)。 H列[被叫国代码]取C列中数字的前几位,用于下一步 坦白说,我一直坚持的

下表是我正在研究的XLSX中的前29行,其主要目的是计算导出呼叫数据的成本

下表中的数据是PowerShell脚本填充的结果,该脚本将CSV中的费率数据(用于计算通话费用)与另一个CSV中客户每日通话统计数据中的通话数据相结合

费率数据:

F列[目的地]包含所有已知的国家代码。 E列[费率]包含F列中每个国家/地区代码的费率值,用于计算结束时的通话成本

调用导出数据: C列[被叫人号码]包含被叫人的原始电话号码(被叫人)。 H列[被叫国代码]取C列中数字的前几位,用于下一步

坦白说,我一直坚持的目标是:

专栏I是我正在做的

我需要一个公式,有效地查找H列中的拨号国家代码,并查找F列中与之最相似(不需要精确)的国家代码。一旦找到,我需要它返回E列[费率]中同一行的值

然后,应使用第C/H列中数字的正确比率填充第I列

我尝试过的公式:

=指数($A$2:$K$100000,VLOOKUP(H2,$F$2:$F$100000,5,TRUE))

=索引($G$2:$G$100000,匹配(H2,$F$2:$F$100000,0))

我对Excel不是很在行,但我确信用100000来选择整个专栏是很糟糕的做法

谢谢你的帮助:)

开始时间 顾客 被叫号码 国家 比率 目的地 持续时间(分钟) 被叫国代码 电话费 通话费用 2020-09-01T07:25:30.5190000Z 名称1 +44*** 阿富汗 1.415 93 0 44 2020-09-01T08:05:52.6250000Z 姓名2 +442476****** 阿富汗 1.415 9320 0.383333333 442 2020-09-01T08:33:49.6530000Z 名字3 +441509****** 阿富汗 1.415 9321 0.7 441 2020-09-01T08:35:18.5300000Z 名字4 +441509****** 阿富汗 1.415 9322 0.766666667 441 2020-09-01T08:43:45.330000Z 名字5 +447976****** 阿富汗 1.415 9323 1.85 447 2020-09-01T08:47:29.9630000Z 名字6 +442476****** 阿富汗 1.415 9324 2.533333333 442 2020-09-01T08:57:43.2680000Z 姓名7 +447875****** 阿富汗 1.415 9325 3.633333333 447 2020-09-01T09:04:42.8230000Z 姓名8 +441212****** 阿富汗 1.415 9326 4.916666667 441 2020-09-01T09:15:32.7220000Z 名字9 +441923****** 阿富汗 1.415 9327 1.9 441 2020-09-01T09:30:36.4750000Z 名字10 +441923****** 阿富汗 1.415 9328 5.8 441 2020-09-01T09:58:12.8380000Z 名字11 +442476****** 阿富汗 1.415 9370 0.516666667 442 2020-09-01T10:03:04.1270000Z 名字12 +442476****** 阿富汗 1.415 9375 13.51666667 442 2020-09-01T10:27:49.6090000Z 名字13 +442476****** 阿富汗 1.415 9377 2.716666667 442 2020-09-01T11:04:21.7850000Z 姓名14 +442476****** 阿富汗 1.415 9378 1.6 442 2020-09-01T11:13:31.9810000Z 名字15 +442070****** 阿富汗 1.415 9379 9.816666667 442 2020-09-01T11:46:53.4730000Z 姓名16 +442476****** 阿兰群岛 247 0.283333333 442 2020-09-01T11:47:14.9110000Z 姓名17 +442476****** 阿尔巴尼亚 0.537 355 0.866666667 442 2020-09-01T12:30:38.4380000Z 姓名18 +442476****** 阿尔巴尼亚 0.537 3554 0.25 442 2020-09-01T12:30:59.5190000Z 姓名19 +442476****** 阿尔巴尼亚 0.537 35567 0.283333333 442 2020-09-01T12:31:34.330000Z 姓名20 +442476****** 阿尔巴尼亚 0.537 35568 0.283333333 442 2020-09-01T12:35:20.8430000Z 姓名21 +442476****** 阿尔巴尼亚 0.537 35569 0.3 442 2020-09-01T12:37:36.5550000Z 姓名22 +442476****** 阿尔及利亚 0.537 213 1.366666667 442 2020-09-01T12:42:07.9660000Z 姓名23 +447723****** 阿尔及利亚 0.537 21321 1.466666667 447 2020-09-01T13:13:37.7610000Z 姓名24 +441926****** 阿尔及利亚 0.537 21355 3.283333333 441 2020-09-01T13:44:57.3190000Z 姓名25 +442476****** 阿尔及利亚 0.537 21356 0.15 442 2020-09-01T13:46:39.2640000Z 姓名26 +442476****** 阿尔及利亚 0.537 21366 0.15 442 2020-09-01T13:58:14.1340000Z 姓名27 +442476****** 阿尔及利亚 0.537 21369 6.2 442 2020-09-01T13:58:30.5560000Z 姓名28 +442476****** 阿尔及利亚 0.537 21377 0.583333333 442
将表复制到workbbok并计算出以下代码:

=IF(LEFT($C1;4)=$H1;INDEX($A$1:$I$28;ROW($H1);5);"")
此代码检查电话号码的前4位是否等于H列中的号码。如果这是真的,那么它将获取H的行号,并从E获取值。如果它为假,则不写入任何内容

我不知道你是否打错了问题,但我看不出H列和F列之间有什么相似之处

我需要一个公式,可以有效地查找H列中拨打的国家代码,并查找F列中与之最相似(不需要精确)的国家代码

所以我为C列和H列编写了代码

但这段代码有一个缺点:H列中的前4位数字必须精确。这意味着你必须有这样的H形式:+442+447等

可以随意更改列和行的范围和名称,以匹配Excel表格


提示:如果要选择整列,必须编写a:a;B:B等输入公式。或者只需单击列的名称,它就会自动插入。行也一样。

改进Excel的几点建议: 为了更好地使用Excel,我建议您将帮助列用于所需的子计算,因为没有人能够理解冗长的公式。更好的方法是:使用小型查找表作为参考。 您需要两个子栏:1用于国家代码(从电话号码中提取),1用于费率。
因此,我建议添加一个带有“国家代码”“国家名称”“费率”的表。这将是一个小表格,您可以从那里查找数据

请注意以下事项:

  • 电话号码是一个字符串。这不是一个数字。查看“被叫号码”中的单元格。它们的格式是数字吗?文本?确保它们被格式化为文本是很重要的。一旦它们被激活,您就可以开始正确地操作它们。
  • 你说得对,