下表是我正在处理的 XLSX 中的前 29 行,主要用于计算导出呼叫数据的成本。
下表中的数据是来自 PowerShell 脚本的填充结果,该脚本将来自 CSV 的费率数据(用于计算通话费用)与来自另一个 CSV 中客户每日通话统计数据的通话数据相结合。
费率数据:
F 列 [目的地] 包含每个已知的国家/地区代码。 E 列 [Rate] 包含 F 列中每个 Country Code 的 Rate 值,用于计算最后的通话成本。
呼叫导出数据: C 列 [Callee Number] 包含被呼叫的原始电话号码(Callee)。 H 列 [被叫国家代码] 取 C 列中号码的前几位数字,用于下一步。
坦率地说,我坚持的必需目标:
第 I 列是我正在处理的内容。
我需要一个公式来有效地在 H 列中查找拨打的国家/地区代码,并在 F 列中查找与其最相似(不需要精确)的国家/地区代码。一旦找到,我需要它返回同一行的值,在列 E [Rate] 中。
然后应使用 C / H 列中数字的正确比率填充 I 列。
我尝试过的公式:
=INDEX($A$2:$K$100000,VLOOKUP(H2,$F$2:$F$100000,5,TRUE))
=INDEX($G$2:$G$100000,MATCH(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.3300000Z | 姓名 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.3300000Z | 姓名 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 | Name22 | +442476****** | 阿尔及利亚 | 0.537 | 213 | 1.366666667 | 442 | ||
2020-09-01T12:42:07.9660000Z | Name23 | +447723****** | 阿尔及利亚 | 0.537 | 21321 | 1.466666667 | 447 | ||
2020-09-01T13:13:37.7610000Z | Name24 | +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 | Name26 | +442476****** | 阿尔及利亚 | 0.537 | 21366 | 0.15 | 442 | ||
2020-09-01T13:58:14.1340000Z | Name27 | +442476****** | 阿尔及利亚 | 0.537 | 21369 | 6.2 | 442 | ||
2020-09-01T13:58:30.5560000Z | Name28 | +442476****** | 阿尔及利亚 | 0.537 | 21377 | 0.583333333 | 442 |
答案 0 :(得分:0)
将表格复制到工作台并找出以下代码:
=IF(LEFT($C1;4)=$H1;INDEX($A$1:$I$28;ROW($H1);5);"")
此代码检查电话号码的前 4 位数字是否等于 H 列中的数字。如果为真,则获取 H 的行号并从 E 中获取值。如果为假,则不写入任何内容。
我不知道您是否打错了问题,但我发现 H 列和 F 列之间没有相似之处。
<块引用>我需要一个公式来有效地在 H 列中查找拨打的国家/地区代码,并在 F 列中查找与其最相似(不需要精确)的国家/地区代码。
所以我编写了 C 列和 H 列的代码。
但是此代码有 1 个缺点:您需要在 H 列中准确输入前 4 位数字。这意味着你必须像这样形成 H:+442; +447 等
随意更改列和行的范围和名称以匹配您的 Excel 表格。
提示:如果您想选择整列,您必须在公式中写入A:A;B:B 等。或者只需单击列的名称,它就会自动插入。与行相同。
答案 1 :(得分:0)
一些改进 Excel 的建议:
为了与 Excel 配合使用,我建议您使用具有所需子计算的帮助列,因为没有人能理解冗长的公式。更好的是:使用小的查找表作为参考。
您需要两个子列:1 个用于国家/地区代码(从电话号码中提取)和 1 个用于费率。
所以我建议添加一个带有“国家代码”“国家名称”“费率”的表格。它将是一个小表格,您可以从那里查找数据。
请注意以下事项: