2016-07-12 74 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'"))