2016-07-12 8 views
1

ときどきネストしたテーブル(テーブルのセルのテーブル)があり、Schematiq関数を使用して内部テーブルにフィルタを適用したいとします。 一般的な関数呼び出しは私には分かりますが、さまざまな引数に適切な引用符を適用する場合に問題が発生します。 特定の文字列をフィルタリングしたいのですが、内部関数スニペットの外側関数スニペットとシングルクォートの二重引用符を既に使用しているため、フィルタリングする文字列を引用するために何を使用するのかわかりません。 私はいくつかのオプションを試してみましたが、最後の一つはネストしたテーブルの内部テーブルのフィルタリング

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

は、あなたがこの問題を解決する方法を助けてくださいできますか?

答えて

0

tbl.CalculateColumn()は、あなたが好きなものを列の値にすることができるので、ここではテーブルの列にtbl.Filter()のようなテーブル関数を適用することができます適切なことを行う。難易度は実際にスニペットの中にネストされた引用符を入れることです。

SchematiqがSPOT2は次のように扱われる(Excelの数式に)そうでなければ、SPOT2の前後に引用符を持っている'tbl.Filter()'ニーズに渡しているが、内側スニペット、あなたがやっているれ、スニペットに単一または二重のいずれかの引用符を使用することができますテキストではなく名前付き範囲。引用符の中にリテラル引用符を書き込むには、あなたはそれを倍増する必要があるので、次はあなたのために働くべき:

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

を(私は2つの単一引用符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()修正C24にスニペットにfn入力常ににスニペットをC25から入力すると、tbl.CalculateColumn()は、列の値を残りのtbl入力として渡して関数を適用します。 2つのスニペットを分離することで、必要に応じてフィルタロジックを見やすくし、後で修正することができます。もちろん、この方法を1つのセルにまとめて組み合わせることもできます。これは、1つのセルに数式を保存したい場合は全体的にお勧めします。

=tbl.CalculateColumn(C23,"Result", fn.FixInput("(fn, tbl) => tbl.Filter(tbl, 'tier_info2', fn)", "='SPOT2'")) 
関連する問題