有时我有一个嵌套表(表格单元格中的表),并希望使用Schematiq函数在内部表上应用过滤器。 一般函数调用对我来说很清楚,但是当涉及到对各种参数应用正确的引号时会出现问题。 我想过滤一个特定的字符串,但由于我已经使用外部函数代码段的双引号和内部函数代码段的单引号,我不知道用什么来引用我要过滤的字符串。 我尝试了几个选项,最后一个是
=tbl.CalculateColumn(C23,"Result","r =>tbl.Filter(r,'tier_info2','=SPOT2')")
你能帮忙解决一下这个问题吗?
答案 0 :(得分:0)
你实际上非常接近正确的解决方案,因为tbl.CalculateColumn()
允许你对列中的值做任何你喜欢的事情,所以在这种情况下应用像{{1这样的表函数一列表是完全正确的事情。实际上,难点在于将嵌套引号放在代码段中。
Schematiq允许您在代码段中使用单引号或双引号,但是您传递给tbl.Filter()
的内部代码段需要在'tbl.Filter()'
附近引用否则(在Excel公式中)SPOT2
被视为命名范围而不是文本。要在引号中写一个字面引用,你必须加倍,所以以下内容应该适合你:
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()
中fn
代码段的输入,始终是C24
的摘录,然后C25
通过传递列来应用该功能值为剩余的tbl.CalculateColumn()
输入。通过分离两个片段,如果需要,可以更容易地查看并稍后修改过滤器逻辑。当然,这种方法也可以组合成一个单元格,如果你想把你的公式保存在一个单元格中,这就是我的整体建议:
tbl