カスタム関数のループ処理
初めてカスタム関数なるものを作ったのは10年以上前で。
その時からあまり変わらない処理がある。
シンプルな形はこうである。
Let(
[
Cnt=If(Cnt="";1;Cnt);
kazu=10;
Value= Value & Cnt
];
If(Cnt<kazu;kaiki(Cnt+1;Value);Value)
)
saiki("" ; "")
回答12345678910
この数をarrayから抜いたりして使う。
Array処理のシンプルな形はこうである。
Let(
[
Cnt=If(Cnt="";1;Cnt);
kazu=ValueCount(Array);
Value= Value & GetValue(Array;Cnt)
];
If(Cnt<kazu;saikiArray(Array;Cnt+1;Value);Value)
)
saikiArray(FieldNames(Get(ファイル名);Get(レイアウトテーブル名));"" ; "")
回答
今回も繰り返しフィールドを取ろうと、こう書くわけだが
Let(
[
Cnt0=Case(Cnt0="";Start;Cnt0=0;Start;Cnt0);
Blank= Blank & Case(Cnt0=Start;"";Delimit) & GetRepetition( RepeatingField; Cnt0 )
];
If(Cnt0<End;GetMidRepList(RepeatingField;Start;End;Delimit;Blank;Cnt0+1);Blank)
)
GetMidRepList(RepeatingField;Start;End;Delimit;Blank;Cnt0)
GetMidRepList(RepeatingField;1;3;"★";"";0)
みたいに使うわけだが。
コチラの方の処理を見ると・・・美しい!
https://www.briandunning.com/cf/173
GetRepetition ( repeatingField ; startRepetition ) & "¶" &
If (
(startRepetition+1 ) <= endRepetition;
MiddleRepetitions ( repeatingField ; startRepetition +1; endRepetition )
シンプル!単純明快!
また真似をしようと思いました。
この記事が気に入ったらサポートをしてみませんか?