在嵌套表格的内部表格上进行过滤
有时我有一个嵌套的表格(表格单元格中的表格),并希望使用Schematiq函数在内部表格上应用filter。 一般的函数调用对我来说很清楚,但是在将正确引号应用于各种参数时会出现问题。 我想过滤一个特定的string,但由于我已经使用双引号的外部函数代码段和单引号的内部函数代码段,我不知道用什么来引用我过滤的string。 我已经尝试了几个选项,最后一个是
=tbl.CalculateColumn(C23,"Result","r =>tbl.Filter(r,'tier_info2','=SPOT2')")
你能帮助如何解决这个问题吗?
实际上,你实际上非常接近正确的解决scheme,因为tbl.CalculateColumn()
允许你为列中的值做任何你喜欢的事情,所以在这种情况下,应用一个表函数,像tbl.Filter()
的表格是正确的事情。 难度实际上是在代码片段中获取嵌套引号。
Schematiq允许您在代码片段中使用单引号或双引号,但是您要传递给'tbl.Filter()'
的内部代码段需要在SPOT2
附近引号(在Excel公式中) SPOT2
是视为命名范围而不是文本。 要在报价中写一个字面的引号,你必须加倍,所以下面的内容应该适合你:
=tbl.CalculateColumn(C23,"Result","r =>tbl.Filter(r,'tier_info2','=''SPOT2''')")
(请注意,我已经在SPOT2
任一侧添加了两个单引号)
所有这些引用的嵌套有点尴尬,所以一种select是将片段移动到它自己的单元格。 这也可能使您的工作表更容易阅读:
C24: r => tbl.Filter(r, "tier_info2", "='SPOT2'") C25: =tbl.CalculateColumn(C23, "Result", C24)
通过将代码片段移动到它自己的单元格中,不需要用双引号将所有内容包装起来,因此可以围绕文本值使用双引号和单引号。
另一种方法是将内部过滤片段作为函数的input,并使用fn.FixInput()
将其值提供给计算:
C24: (fn, tbl) => tbl.Filter(tbl, 'tier_info2', fn) C25: '='SPOT2' C26: =tbl.CalculateColumn(C23, "Result", fn.FixInput(C24, C25))
fn.FixInput()
将fn.FixInput()
的fn
input固定为C25
的代码片段,然后tbl.CalculateColumn()
通过传递列值作为剩余的tbl
input来应用该函数。 通过分离这两个片段,可以更容易地查看并稍后修改filter逻辑(如果需要)。 当然,这种方法也可以合并回到一个单元格中,如果您想将公式保存在一个单元格中,这就是我所推荐的总体方法:
=tbl.CalculateColumn(C23,"Result", fn.FixInput("(fn, tbl) => tbl.Filter(tbl, 'tier_info2', fn)", "='SPOT2'"))