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

时间:2016-07-11 14:44:01

标签: excel excel-formula schematiq

此问题与Microsoft Excel的Schematiq加载项有关。

使用=tbl.Lookup(table, columnsToSearch, valuesToFind, resultColumn, [defaultValue]) valuesToFind列中的值左侧一致3个字符,然后变化后的字符(例如908-123456或908-321654 - 即908始终一致)

table1

如何告诉函数只根据前3个字符查找值?预期答案应该是上述结果的总和,即500 + 300 = 800

1 个答案:

答案 0 :(得分:0)

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都有一行,每个值的小计为amount。最后,您可以完全按照您的要求进行查找,输入表将返回800:

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