みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
あああ
いいい
ううう
という改行区切りの文字列が入っています.(何行あるかはレコードによって違います)
これを,改行区切りのまま
あああ。
いいい。
ううう。
というように,それぞれに同じ文字列を付け加えたいのです. 再帰的にLet関数などを使うことはわかったのですが,不慣れなもので書き方がわかりません. どなたかわかる方,アドバイスをお願いいたします.
Offline
> 何行あるかはレコードによって違います
何行あるかによって解法が違います。
Evaluate再帰式の再帰回数が2百数十回程度と低いためです。
●【Evaluateループ式の作例】(ループ回数限界の2百数十行以下)
Let([
$lst="あああ¶いいい¶ううう";
$add="。";
$i=0;
$res="";
$fnc="Case($i=ValueCount($lst); $res;
Let([
$i=$i+1;
$itm=GetValue($lst; $i);
$res=List($res; $itm & $add)
]; Evaluate($fnc))
)"
];
Evaluate($fnc)
)
●【Substitute繰越変数式による作例】(数値桁数限界の400行以下)
Let([
$lst="あああ¶いいい¶ううう";
$add="。";
$i=0;
$res="";
$n=ValueCount($lst);
$sub="Let([$i=$i+1; $itm=GetValue($lst;$i); $res=List($res;$itm&$add)]; \"\") & ";
$fnc=Substitute(10^$n-1; [9; $sub]) & "$res"
];
Case($n; Evaluate($fnc))
)
なお、今回提示事例の解決自体が目的なら、再帰でなくとも制限のない一般式でできます。
●【Substitute式の作例】
Let([
#lst="あああ¶いいい¶ううう";
#add="。"
];
Substitute(#lst & #add; [¶;#add & ¶])
)
Last edited by Hiro (2017-04-26 15:02:17)
Offline
すばらしいです。ありがとうございました。
再帰についてはまだよくわかっていないので
コードをよく理解していないのですが、動作しました。
(スクリプトのように途中でちょっと止めて変数の値をチェックしたりできないから難しいですね)
行数はせいぜい4.5行なので上限のことは考えなくても良さそうです。
これからもよろしくお願いします。
Offline
Pages: 1
[ Generated in 0.008 seconds, 7 queries executed - Memory usage: 504.05 KiB (Peak: 514.77 KiB) ]