rex0220 計算式プラグインの使い方をGPTsに学習させてみる(その10)機能別に計算式を学習の続きです。
チェックボックスの処理を学習させてみます。
概要
チェックボックスの使用方法と配列処理を学習させて、応答内容の改善を図る。
チェックボックスは、複数の選択肢を値として持つので、配列処理が必要になるので配列を返す関数の使用例を学習させる。
チェックボックスの使用方法の学習
チェックボックスと複数選択項目は、複数の選択肢を値として持つので使用例も同様に設定する。
コメントに解説文を記述
・チェックボックス、複数選択の選択肢のカウント
ARRAY_COUNT(チェックボックス)
ARRAY_COUNT(複数選択)
・チェックボックス、複数選択項目が選択されているか判定
チェックボックス、複数選択項目をそのまま判定すると、選択肢をカンマ区切りの文字列として取得します。
そのため、文字列があるかどうかと同じ判定が出見ます。
IF(チェックボックス,1,0) // 1:選択されている, 0: 選択なし
IF(複数選択,1,0) // 1:選択されている, 0: 選択なし
・チェックボックス、複数選択項目に特定の選択のみがされているか判定は、 == の文字列比較で出来ます。
チェックボックス == "A,B" // "A" と "B" のみが選択されている場合、true。 それ以外は false
複数選択 == "A,B" // "A" と "B" のみが選択されている場合、true。 それ以外は false
・チェックボックス、複数選択項目に特定の選択がされているか判定
IN(チェックボックス,"A","B") // "A" または "B" が選択されている
IN(複数選択,"A","B") // "A" または "B" が選択されている
・チェックボックス、複数選択項目に特定の複数選択がされているか判定
INTERSECT 関数で配列の積集合(両方の配列に存在する値を配列で返す)を使って、複数選択の判定ができます。
LET(x,ARRAY("A","B"), // 判定用配列
y,INTERSECT(チェックボックス,x), // チェックボックスとの積集合
ARRAY_COUNT(x) == ARRAY_COUNT(y) // 判定用配列の要素数とチェック
)
LET(x,ARRAY("A","B"), // 判定用配列
y,INTERSECT(複数選択,x), // 複数選択との積集合
ARRAY_COUNT(x) == ARRAY_COUNT(y) // 判定用配列の要素数とチェック
)
配列処理の学習
配列を返す関数とその使用例をまとめて学習させる。
配列計算について
・配列を返す関数
ARRAY(1,2,3) -> [1,2,3]
ARRAY("A","B","C") -> ["A","B","C"]
ARRAY("A",ARRAY("B","C")) -> ["A","B","C"] // 配列をマージ
DISTINCT(1,2,3,1) -> [1,2,3] // 値の重複値を排除し、配列化
DISTINCT("A","B","C","A") -> ["A","B","C"] // 値の重複値を排除し、配列化
DISTINCT("A","B",ARRAY("C","A")) -> ["A","B","C"] // 値の重複値を排除し、配列化
INTERSECT(ARRAY("ABC","DEF","XYZ"),ARRAY("XYZ","ABC")) -> ["ABC","XYZ"] // 配列の積集合
MATCH("ABCDEXXXAXC","A.C","g") -> ["ABC","AXC"] // 文字列の検索(正規表現)で、文字列(g オプション指定時は配列)を返す
RANDBETWEEN(1,10,10) -> [6,9,6,3,5,3,3,10,9,5] // 指定された範囲で整数の乱数を生成
REVERSE(ARRAY("ABC","XYZ")) -> ["XYZ","ABC"] // 配列の反転
SHUFFLE(ARRAY("A","B","C","D","E")) // 配列をランダムに並び変え
SLICE(ARRAY("A","B","C"),0,2) -> ["A","B"] // 配列の切り出し
SLICE(ARRAY("A","B","C"),-2) -> ["B","C"] // 配列の切り出し
SPILT("ABC,XYZ",",") -> ["ABC","XYZ"] // 区切り文字","で配列に変換
SPLIT("ABC","") -> ["A","B","C"] // 1文字毎に配列に変換(区切り文字""で配列に変換)
TARRAY(文字列T) -> ["A","B","C"] // テーブル内項目を配列にする ※文字列Tの各行が"A","B","C"
TARRAYIF(IN(ドロップダウンT,"A","B"), 文字列T) // ドロップダウンTが"A"または"B"の条件で文字列Tを配列にする
TDS(文字列T) -> ["A","B","C"] // テーブル内項目を値の重複値を排除して配列にする ※文字列Tの各行が"A","B","C"
TDSIF(IN(ドロップダウンT,"A","B"), 文字列T) // ドロップダウンTが"A"または"B"の条件で文字列Tを値の重複値を排除して配列にする
ARRAY_DEL(ARRAY("A","B"),"A") -> ["B"] // 配列要素を削除
ARRAY_FOR(3,"A") -> ["A","A","A"] // 指定した要素数の配列に変換※最大数 1000
ARRAY_FOR(3,idx,"A"&idx) -> ["A1","A2","A3"] // 指定した要素数の配列に計算式で文字列にして変換
ARRAY_FIL(ARRAY(1,2,3),xx,xx>1) -> [2,3] // 配列の要素を式でフィルタリング
ARRAY_FIL(ARRAY("A","B","C"),xx,xx!="A") -> ["B","C"] // 配列の要素を"A"以外でフィルタリング
ARRAY_FIL(ARRAY(1,2,3),xx,idx,idx>1) -> [3] // 配列の要素を インデックス>1 でフィルタリング
ARRAY_MAP(ARRAY(1,2,3),xx,xx*3) -> [3,6,9] // 配列要素を3倍にして返す
ARRAY_MAP(ARRAY(1,2,3),xx,"A"&xx) -> ["A1","A2","A3"] // 配列要素に"A"を付加して返す
ARRAY_MAP(ARRAY("A","B","C"),xx,"A"&xx) -> ["AA","AB","AC"] // 配列要素に"A"を付加して返す
ARRAY_MAP(ARRAY(1,2,3),xx,idx,xx+idx) -> [1,3,5] // 配列要素にインデックス値を加算して返す
ARRAY_SORT(ARRAY("A","X","B")) -> ["A","B","X"] // 配列要素をソート
ARRAY_SORT(ARRAY("A","X","B"),0) -> ["X","B","A"] // 配列要素を逆順にソート
・テーブル項目に重複する値があるかチェック
TDUPCK(文字列T) // テーブル重複値チェックし、重複がある場合、true 。空文字を除外するオプションが無い場合、空文字を除外しない。重複を見つけたら処理が終了するため、効率がいい。
TDUPCK(文字列T) -> false //※(文字列Tが"A","B","C") // テーブル重複値チェックする。空文字を除外しない。
TDUPCK(文字列T) -> true //※(文字列Tが"A","B","A") // テーブル重複値チェックする。空文字を除外しない。
TDUPCK(文字列T) -> true //※(文字列Tが"A","","") // テーブル重複値チェックする。空文字を除外しない。
TDUPCK(文字列T,0) -> true //※(文字列Tが"A","","") // テーブル重複値チェックする。空文字を除外しないオプションにより空文字を除外しない。
TDUPCK(文字列T,1) -> false //※(文字列Tが"A","","") // テーブル重複値チェックする。空文字を除外するオプションを指定している。
・テーブルの指定行にある項目を取得
SUBTABLE(数値T,0) // テーブル先頭行の数値項目T の値を取得
SUBTABLE(数値T,1) // テーブル2行目の数値項目T の値を取得
SUBTABLE(数値T,ROWNO(テーブル)) // ROWNO(テーブル)で示されるテーブル処理中の行の数値項目T の値を取得
チェックボックスの選択肢の判定
「チェックボックスの選択肢がAまたはBがある場合に、”X". それ以外の場合は"Y" に設定する計算式は?」
少し冗長な計算式を応答。
学習させた使用例では、IN 関数で「AまたはB」をチェックできるのだが、反映されていない。
計算式の改善
「OR を使わずに IN 関数でチェックできるのでは?」
IN 関数でまとめられた。