使用tbl.Lookup只匹配列值的一部分

此问题涉及Microsoft Excel的Schematiq加载项。

使用=tbl.Lookup(table, columnsToSearch, valuesToFind, resultColumn, [defaultValue]) valuesToFind列中的值在valuesToFind有一致的3个字符,然后是不同的字符(例如908-123456或908-321654 – 即908是始终一致)

表格1

我怎么才能告诉函数只查找基于前3个字符的值? 预期的答案应该是上述结果的总和,即500 + 300 = 800

tbl.Lookup()通过寻找一个完全匹配的工作 – 这有助于确保它的速度,但在这种情况下,这意味着你需要一个额外的步骤来计算一列查找值,如下所示:

 A2: =tbl.CalculateColumn(A1, "code", "x => LEFT(x, 3)", "startOfCode") 

这会给你一个新的列,你可以用于columnsToSearch参数,但是tbl.Lookup()也只查找一个匹配 – 如果表中有多个匹配的行,它不知道如何组合值,所以我想你还需要一个步骤来组合你的表的前3个字符的代码,如下所示:

 A3: =tbl.Group(A2, "startOfCode", "amount") 

由于tbl.Group()默认会将值相加,因此会为您提供一个表,其中包含startOfCode每个不同的值以及每个值的小计的小计。 最后,您可以完全按照您的要求进行查找,input表格将返回800:

 A4: =tbl.Lookup(A3, "startOfCode", "908", "amount")