你實際上非常接近正確的解決方案,因爲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()
修正輸入到代碼段fn
在C24
總是成爲C25
的片段,然後tbl.CalculateColumn()
通過傳遞列值作爲其餘的tbl
輸入來應用該函數。通過分離這兩個片段,可以更容易地查看並稍後修改過濾器邏輯(如果需要)。當然,這種方法也可以合併回到一個單元格中,如果您希望將公式保留在一個單元格中,我將推薦這種方法:
=tbl.CalculateColumn(C23,"Result", fn.FixInput("(fn, tbl) => tbl.Filter(tbl, 'tier_info2', fn)", "='SPOT2'"))