2026/01/06

エクセル&chatgptで子供の漢字テスト作製

 子供の漢字学習のお手伝いした。休み明けにテストがあるということ、また範囲が200文字と多いこと、ということで、飽きずに継続してできるやり方はないかと考えた。

 同じページを繰り返し覚えるまで書く、というのは、結構心が削られて継続できないと思う。また、最初の方のページはしっかりやるけれども、最後の方は時間がなくなって適当になるということも経験済み。

 あと「練習」と言われたときと、「テスト」と言われたときでは気持ちの入り方や集中力が違うと思うが、これ私だけか。

 これらを踏まえてやる気の継続する漢字練習方法を考えた。漢字小テスト(20問)を作製し、テスト範囲からランダムで出題されるようにし、正解した漢字は、テスト範囲から除外、不正解した漢字は、テスト範囲に残り続ける。テスト範囲から漢字が全てなくなったら終了、という方法で漢字学習を進めることとした。

 とはいっても、テストの作り手としては、なかなか面倒なので、漢字テストをエクセルを駆使して作製した。

 まずは出題範囲のデータベース化。大変そうに見えるが、これは漢字ドリルを写真で撮影、OCRで抽出を行えば、思ったよりも短時間で抽出可能。Googleのメモ帳Keepを使用。写真を添付すると簡単にテキスト抽出してくれる。抽出したテキストをエクセルに貼り付け、Table化しておき、呼び出ししやすいようにしておく。


 

テストのレイアウトは下記



 

データベースから値を取得し、表示する。エクセルVBAは使用せずにセルに式の入力のみ。ここでchatgptが活躍する。例えばA2セルには、下記式が入力されている。これで20個のIDを2行目にランダムに表示してくれる。すでに正解した漢字は、データベースの列[正解]に、1を入力しておくと、テスト範囲外となる。あと拡張性も考えて、ある列のある値が入力されている漢字のみをテストの範囲とできるようにした。例えば不正解数が重なった漢字のみを抽出したいときには、列[不正解数合計] が「3」の漢字(3回間違えた漢字ということ)と設定する。これで苦手な漢字のみのテストが簡単に作製可能となる。このように自分では複雑で書けない式をchatgptが書いてくれた。業務では可読性が悪いのでNG、属人化するのでNGといわれそうだが、chatgptには簡単に理解し、編集可能らしいので、とりあえずOKとしている。

 

A2に入力されている値

=LET(
  colA, XMATCH($P$1, 漢字ソース[#見出し]),
  critcolA, INDEX(漢字ソース,, colA),

  colB, XMATCH($P$2, 漢字ソース[#見出し]),
  critcolB, INDEX(漢字ソース,, colB),

  src, FILTER(
    漢字ソース[ID],
    (漢字ソース[ID]<>"") *
    (漢字ソース[正解]<>1) *
    (critcolA = R1) *
    (critcolB = R2),
    ""
  ),

  n, MIN(20, ROWS(src)),

  IF(
    n=0,
    "",
    TRANSPOSE(
      SORT(
        TAKE(SORTBY(src, RANDARRAY(ROWS(src))), n),
        1, -1
      )
    )
  )
)


2行目にIDさえ出力できれば、あとはIDでテーブル内を検索し、その他の列の値を出力するのみ。

=XLOOKUP(A$2, 漢字ソース[ID], 漢字ソース[掲載ページ],"")


 今後、漢字テストのお手伝いをするときは、新しいテスト範囲をTableに追加するだけでOK。