カスタム関数のループ処理

初めてカスタム関数なるものを作ったのは10年以上前で。
その時からあまり変わらない処理がある。

シンプルな形はこうである。

画像1

Let(
[
Cnt=If(Cnt="";1;Cnt);
kazu=10;
Value= Value & Cnt
];
If(Cnt<kazu;kaiki(Cnt+1;Value);Value)
)

saiki("" ; "")
回答12345678910
この数をarrayから抜いたりして使う。

Array処理のシンプルな形はこうである。

画像2

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(レイアウトテーブル名));"" ; "")

回答

画像3

今回も繰り返しフィールドを取ろうと、こう書くわけだが

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 )

シンプル!単純明快!
また真似をしようと思いました。





この記事が気に入ったらサポートをしてみませんか?