1
1

rex0220 計算式プラグインの使い方をGPTsに学習させてみる(その11)チェックボックスの処理を学習

Posted at

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」をチェックできるのだが、反映されていない。

2023-11-18_20h35_48.png

計算式の改善

「OR を使わずに IN 関数でチェックできるのでは?」
IN 関数でまとめられた。

2023-11-18_20h38_00.png

「チェックボックスの選択肢の要素に "ABC" の文字列を付与する計算式は?」

  • 1回目は、配列の例
    2023-11-19_17h02_47.png

  • 2回目は、チェックボックスの例になった
    2023-11-19_17h04_17.png

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1