2017-03-03 12 views
0

を返すには、フォーマットを持つ単一列のデータ(英数字、可変長の)区切り...Googleスプレッドシート:スプリット文字列と私は文字列(「 - 」)は、最後のN個の要素

Column A 
"aaa-bbb-ccc" 
"ddd-bbb-eee" 
"aaa-fff-ggg" 

私はされています他の場所で一部のデータを返すためにarray_constrain()を使用できるが、これは...私はからの最後のN個の要素を取得するために探しています

aaa    (num_cols = 1) 
aaa-bbb   (num_cols = 2) 
aaa-bbb-ccc  (num_cols = 3) 

ので、私が持っている可能性が配列の最後に配列の先頭からN個の要素でありますスプリットデータ...

bbb-ccc OR 
ccc 

num_colsは配列の最初から配列の後ろに行くので、私のシナリオには適していません。

This answerは、regexextract()を使用して、私のRegEx Fooがより強力だった場合、おそらく私は正しい方向に小さなナッジでその作業を行うことができる最後の値を取得することを示唆しています。

私はindex()が使用できることを知っていますが、分割データから一度に1つの要素しか返さないので、乱雑/非効率になります。

だから、問題は誰も配列から最後のN個の要素を返す方法を知っていますか?通常の並べ替えは機能しませんが、配列を逆にするとうまくいく可能性があります。

+0

function reverseLine(line) { return line[0].reverse(); } 
カスタム式として

使用:行の=reverseLine(B1:D1)aaa bbb ccc戻り


スクリプトのサンプル

はこれを試してみてくださいこれは私が動作しますあなたが何をしようとしているのか理解していれば、 '= TRIM(RIGHT(SUBSTITUTE(A1、" - "、REPT(" - "、100))、100))' '= TRIM(LEFT(右(代用)(A1、" - 、REPT( " - "、40))、60)、40)) 'は2番目に最後になり、60を80で120にすると、最後に3回、最後に200回など私はそれがまったく役立つかどうかわかりません。 – Gordon

答えて

0

reverse機能はありません。

  1. 小さな関数のsctiptで書く:の配列
  2. 使用逆醜い巨大式

巨大式サンプル

=JOIN("-",QUERY({ArrayFormula(ROW(INDIRECT("A1:A"&COUNTA(SPLIT(A1,"-"))))),TRANSPOSE(SPLIT(A1,"-"))},"select Col2 order by Col1 desc limit 2 "))

変化limit 2 Iは、2つの方法を参照してください最後のN個の要素を得るために数式の最後。私があれば知らない

ccc 
bbb 
aaa 
関連する問題