『BYROW(C2:F5,LAMBDA(r,TAKE(FILTER(r,r<>』(訓練中)
A列 B列 C列 D列 E列 F列 1 名称 直近 26回 25回 24回 23回 2 あ 89 80 90 91 3 い 146 135 4 う 106 104 5 え 77
空欄の列を除いた数値を返す関数
を質問した者です。
訓練中なので、
BYROW(C2:F5,LAMBDA(r,TAKE(FILTER(r,r<>""),1,1)))
について以下の通り私なりに解説してみたのですが、
このような解釈で良いかどうか教えていただけないでしょうか。
お手数おかけいたしますが、よろしくお願いいたします。
BYROWで、
C2:F2
C3:F3
C4:F4
C5:F5
と順番に、変数「r」に代入していく。
FILTERで
C2:F2(変数「r」)
という配列の中で
C2:F2(変数「r」)<>""
がTrueの物を抽出したもの(配列)を返す。
(2行目は、89と80と90と91という値の配列)
(3行目は、146と135という値の配列)
(4行目は、106と104という値の配列)
(5行目は、77という値の配列)
TAKE
でFILTERの戻り値(配列)の「行が1つ目、列が1つ目」の値を返す。
< 使用 Excel:Microsoft365、使用 OS:Windows11 >
あってます (´・ω・`) 2025/09/22(月) 14:49:09
この掲示板の皆様のご協力で少しずつ
新しいワークシート関数ができるようになってきています。
ご回答くださる皆様に感謝いたします。
(匿名) 2025/09/22(月) 15:22:24
既に適切なコメントをいただいています。蛇足で留意点をコメントするなら下記のようなことです。
正確に言うと、Takeは先頭からいくつ取るかを指定するものなので、 この場合は無関係ですが、2を与えると2番目だけでなく、2番目までの配列が返ることに注意して下さい。 また、負数を与えると最後尾から何個かを取るという意味になります。 起点が固定されているということです。
また、TAKE(FILTER(r,r<>""),1,1)のところは、 TAKE(FILTER(r,r<>""),,1)としてもいいようです。このほうが意図を表していそうな気もします。
その意味ではCHOOSECOLSも利用できると思います。
(xyz) 2025/09/22(月) 15:29:43
>2を与えると2番目だけでなく、2番目までの配列が返ることに注意して下さい。
こちらは、Takeだけでどのようなものが返ってくるかを
いくつも試してみたので、理解できています。
>負数を与えると最後尾から何個かを取るという意味になります。
こちらは知りませんでした。
こちらも、でたらめなデータでいくつか試して
理解することができました。
追加情報をくださり、
本当にありがとうございました。
(訓練中) 2025/09/22(月) 20:25:39
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.