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)
)
コメント