Excel Lambda その2

Excel

4. Lambda 関数の使用例

4.1 一次元 → 一次元変換

4.1.1 テキストを反転する

入力例

A
1 123
2 456
3 7890

出力例

A
4 321
5 654
6 0987

計算式

=LET(reverse_txt, LAMBDA(txt, LET(
cmt, "reverse_txt(txt)、テキストを前後反転する",
max_len,MAX(LEN(txt)),
s,SEQUENCE(,max_len,max_len,-1),
a,BYROW(MID(txt,s,1), LAMBDA(x, TEXTJOIN("", TRUE,x))),a
)),

cmt, "上で作った関数を使用する",
txt, A1:A3,
reverse_txt(txt)
)

4.1.2 文字の繰り返し

入力例

A B C
1 AA B C
2 2 1 3

出力例

A B C D E F
3 AA AA B C C C

計算式

=LET(repeat_txt, LAMBDA(txt,num, LET(
cmt, "repeat_txt(txt,num)、文字列(txt)を繰り返す(num回)",
c, TEXTJOIN("", , REPT(SEQUENCE(, COLUMNS(num)) & "★", num)),
INDEX(txt, , TEXTSPLIT(c, "★", , TRUE) + 0)
)),

cmt, "上で作った関数を使用する",
txt, A1:C1, num, A2:C2,
repeat_txt(txt,num)
)

4.1.3 先頭の指定文字列を削除

入力例

A
1 123
2 456
3 77890

left_txt,{"12","4","5","7","9"}

出力例

A
4 3
5 6
6 890

計算式

=LET(reptxt, LAMBDA(a,b, LET(
cmt, "reptxt(txt, num)、文字の繰り返し",
INDEX(a, , TEXTSPLIT(TEXTJOIN("", , REPT(SEQUENCE(, COLUMNS(b)) & "★", b)), "★", , TRUE) + 0)
)),

del_left_txta, LAMBDA(txt,left_txt, LET(
cmt, "del_left_txta(txt, left_txt)、先頭の文字列を削除、連続文字削除非対応",
a, BYROW(txt, LAMBDA(txt, REDUCE(txt, left_txt, LAMBDA(a,b, IF(LEFT(a, LEN(b)) = b, MID(a, LEN(b) + 1, LEN(a)), a))))),
a)),

del_left_txt,LAMBDA(txt,left_txt, LET(
cmt, "del_left_txt(txt, left_txt)、先頭の指定文字列を削除、left_txt にない文字まで先頭から文字列を削除する",
numa, MAX(LEN(txt)),
left_txta, TEXTSPLIT(TEXTJOIN("★", , reptxt(TEXTJOIN("★", , left_txt), numa)), "★"),
del_left_txta(txt, left_txta)
)),

cmt, "上で作った関数を使用する",
txt, A1:A3, left_txt, {"12","4","5","7","9"},
del_left_txt(txt, left_txt)
)

 | 

コメント

タイトルとURLをコピーしました