2016-07-12 154 views
1

有时我有一个嵌套表格(表格单元格中的表格),并希望使用Schematiq函数在内部表格上应用过滤器。 一般函数调用对我来说很清楚,但是当涉及将正确的引号应用于各种参数时会出现问题。 我想过滤一个特定的字符串,但由于我已经使用外部函数代码段的双引号和内部函数代码段的单引号,我不知道用什么来引用我要过滤的字符串。 我尝试了好几种方案,最后一个是在嵌套表格的内部表格上进行过滤

=tbl.CalculateColumn(C23,"Result","r =>tbl.Filter(r,'tier_info2','=SPOT2')") 

能否请你帮如何解决这个问题?

回答

0

你实际上非常接近正确的解决方案,因为tbl.CalculateColumn()允许你对列中的值进行任何你喜欢的操作,所以在这种情况下,将一个表函数如tbl.Filter()应用到一列表中就是做正确的事情。难度实际上是在代码片段中获取嵌套引号。

Schematiq允许您使用的片段是单或双引号,你正在做的,然而你传递给'tbl.Filter()'需要有大约SPOT2否则引号内片段(Excel公式中)SPOT2被视为一个命名范围而不是文本。要在报价内写文字的报价,你要加倍,所以下面应该为你工作:

=tbl.CalculateColumn(C23,"Result","r =>tbl.Filter(r,'tier_info2','=''SPOT2''')") 

(请注意,我已经添加了两个单引号任SPOT2侧)

所有这些引用的嵌套虽然有些尴尬,但是一种替代方法是将片段移动到它自己的单元格中。这也可能使你的表位更容易阅读:

C24: r => tbl.Filter(r, "tier_info2", "='SPOT2'") 
C25: =tbl.CalculateColumn(C23, "Result", C24) 

通过片断移动到自己的细胞,没有必要包装在双引号整个事情,这样你就可以使用双引号将片段和围绕文本值的单引号。

另一种选择是使所述内过滤器段到输入的功能,并使用fn.FixInput()提供其值,以计算:

C24: (fn, tbl) => tbl.Filter(tbl, 'tier_info2', fn) 
C25: '='SPOT2' 
C26: =tbl.CalculateColumn(C23, "Result", fn.FixInput(C24, C25)) 

fn.FixInput()修正输入到代码段fnC24总是成为C25的片段,然后tbl.CalculateColumn()通过传递列值作为其余的tbl输入来应用该函数。通过分离这两个片段,可以更容易地查看并稍后修改过滤器逻辑(如果需要)。当然,这种方法也可以合并回到一个单元格中,如果您希望将公式保留在一个单元格中,我将推荐这种方法:

=tbl.CalculateColumn(C23,"Result", fn.FixInput("(fn, tbl) => tbl.Filter(tbl, 'tier_info2', fn)", "='SPOT2'"))