漢字学習の新しいアプローチ:Excel VBAで自動化する方法

ec6050

漢字の学習ってどのようにしていますか?多くの人が漢字ドリルなどを準備していると思います。

ただ、もっと特訓的に学習できないだろうか?

また、オンラインで指導されている先生などは、紙媒体を取り込むのに苦労されてはないでしょうか。

そこで、今回はExcelとVBA(Visual Basic for Applications)を活用して漢字学習を効率化する新しい方法をご紹介します。Excelの機能を駆使することで、漢字学習を楽しく、そして効果的に進めることが可能です。

コトゼニ
コトゼニ

ちなみに、ChatGPTと協力して作成しました!

ぜひ最後まで読んでみてください!

他にもChatGPT活用術を紹介しています!

私のChatGPT活用術

ec5961私のChatGPT活用術

ステップ1:漢字のリストを作る

まずは、エクセルの中に、出題する漢字のリストを作成しなければなりません。

まずは、ここでChatGPTに活躍してもらいましょう!

【プロンプト】

次の日本の小学一年生で習う漢字についてそれぞれ、・音読み・訓読み・その漢字を使った短文(ただしその漢字の部分は■■として伏字にして、すぐ後に()を付けてカタカナで読みを書いてください)部首・部首の名称(ひらがなで)・その漢字を使った熟語 を作成してコピペしやすいように表形式でまとめてください。また、小学一年生で学ぶ漢字以外は漢字を使わずひらがなをもちいてください。【漢字】一 右 雨 円 王 音 下 火 花 貝 学 気 九 休 玉 金 空 月 犬 見 五 口 校 左 三 山 子 四 糸 字 耳 七 車 手 十 出 女 小 上 森 人 水 正 生 青 夕 石 赤 千 川 先 早 草 足 村 大 男 竹 中 虫 町 天 田 土 二 日 入 年 白 八 百 文 木 本 名 目 立 力 林 六

するとChatGPTから帰ってきた答えは、

ChatGPTの回答

すごいですね。エクセルにもコピペしやすいように表にまとめてくれています。

この作業を小学一年生~六年生まで行うと、小学校で習う漢字すべてを網羅したリストを作成することができます。

ちなみに、各学年で学ぶ漢字については文部科学省のこちらの資料をご参考ください。PDFでも漢字はコピペできますよ。

そして、すべての学年の漢字を一枚のシートにまとめます。

エクセルにまとめました

私は結局、例文は、「■などの伏字を使わず、漢字で書かせる部分をカタカナにして例文を作成してほしい」と再度プロンプトを投げて修正しました。

次からは問題シートを編集していきます!

ステップ2:問題シートの編集

問題シート

問題シートの完成形はこんな感じです。

まずは、設定から始めましょう。

問題番号と範囲指定のセルを作る

まずは、B1セルに出題する問題番号用のセルを用意します。

ここでは、漢字をまとめているシートの番号に応じて作成するようにしましょう。

つづいて、F3セルとH3セルに出題範囲を設定するためのセルを準備しましょう。

ここで範囲設定をすることで、学年指定をすることができます。ちなみに私のファイルでは、

  • 小学一年生:1~80
  • 小学二年生:81~240
  • 小学三年生:241~439
  • 小学四年生:440~639
  • 小学五年生:640~824
  • 小学六年生:825~1005
  • 全学年:1~1005

と設定しています。

漢字を表示させる部分に数式(VLOOKUP関数)を挿入

つづいて、B7セルに数式を挿入します。

まとめシートから参照するので、VLOOKUP関数を使いましょう。

まとめのシートでの表の構成によって、多少異なるかと思いますが、以下のような数式が使えると思います。

【関数】

=VLOOKUP(B1,まとめ!$A:$I,2,FALSE)

ステップ3:VBAを使って自動化する

いよいよVBAを使って、ボタンを押すと、新たに出題されて、答えを見ると、解答が表示されるようにしていきます。

まずは、ChatGPTに依頼してみます。

範囲指定を反映して、問題番号にランダムな整数を代入するためのVBA

◆プロンプト

エクセルで以下のようなVBAを作りたいです。【要件】・はじめの数字F3と範囲の最後の数字H3の間の中から整数をランダムに生成する。・その値をB1セルに代入する

ChatGPTからの回答はこちら。

chatGPT
chatGPT

以下に、指定された範囲の整数をランダムに生成し、その値をB1セルに代入するVBAコードを示します。

  1. Excelを開く:
    • 目的のExcelファイルを開きます。
  2. VBAエディタを開く:
    • Alt + F11を押して、VBAエディタを開きます。
  3. 新しいモジュールを挿入する:
    • InsertメニューからModuleを選択して、新しいモジュールを挿入します。
  4. VBAコードを入力する:
    • 以下のVBAコードを新しいモジュールに貼り付けます。
Sub GenerateRandomNumber()
    Dim startNum As Integer
    Dim endNum As Integer
    Dim randomNumber As Integer
    
    ' F3セルの値を取得
    startNum = Range("F3").Value
    
    ' H3セルの値を取得
    endNum = Range("H3").Value
    
    ' 指定された範囲内のランダムな整数を生成
    Randomize ' 乱数の初期化
    randomNumber = Int((endNum - startNum + 1) * Rnd + startNum)
    
    ' B1セルにランダムな整数を代入
    Range("B1").Value = randomNumber
End Sub

これで問題番号のセルに自動生成された整数が入力されます。

※完成イメージは後述の「完成形」の動画を参照ください。

問題文のカタカナを太字にする

漢字練習において、どの部分を漢字にすればよいか一目でわかるように問題文の中のカタカナを太字にするようにします。

◆プロンプト

B4セルにはVLOOKUP関数が入っています。そこで参照された値の中に入っているカタカナを太字にする方法はありますか

ChatGPTからの回答はこちら。

chatGPT
chatGPT

VLOOKUP関数の結果として表示された値の中にあるカタカナを太字にするには、VBAを使用してカタカナの文字を見つけて太字にする必要があります。以下の手順に従って、VBAコードを追加してください。

Sub CopyAndBoldKatakana()
    Dim cell As Range
    Dim i As Integer
    Dim char As String
    Dim text As String
    
    ' セル内の既存の太字を解除
    cell.Font.Bold = False

    ' B4セルの値をB5セルに値として貼り付け
    Range("B5").Value = Range("B4").Value
    
    ' B5セルの値を取得
    Set cell = Range("B5")
    text = cell.Value
    
    ' 文字列内の各文字を確認してカタカナを太字にする
    For i = 1 To Len(text)
        char = Mid(text, i, 1)
        If IsKatakana(char) Then
            cell.Characters(i, 1).Font.Bold = True
        End If
    Next i
End Sub

Function IsKatakana(char As String) As Boolean
    ' 文字がカタカナかどうかを判定
    IsKatakana = (char >= "ァ" And char <= "ン") Or (char = "ヴ") Or (char >= "ガ" And char <= "ゴ") Or (char >= "ザ" And char <= "ゾ") Or (char >= "ダ" And char <= "ド") Or (char >= "バ" And char <= "ボ") Or (char >= "パ" And char <= "ポ")
End Function

※はじめのプロンプトで回答されたコードより少し修正を加えています。

これで、問題文のカタカナ部分が太字になりました。

※完成イメージは後述の「完成形」の動画を参照ください。

文字色を変更する

それでは、解答が表示される枠の文字の色を白にして、出題時には隠されているように見せましょう。

◆プロンプト

GenerateRandomNumberの最後にB7セルのフォント色を白色にする処理を追加してください

chatGPT
chatGPT

了解しました。GenerateRandomNumberサブルーチンの最後に、B7セルのフォント色を白色にする処理を追加します。以下が修正後のVBAコードです。

Sub GenerateRandomNumber()
    Dim startNum As Integer
    Dim endNum As Integer
    Dim randomNumber As Integer
    
    ' F3セルの値を取得
    startNum = Range("F3").Value
    
    ' H3セルの値を取得
    endNum = Range("H3").Value
    
    ' 指定された範囲内のランダムな整数を生成
    Randomize ' 乱数の初期化
    randomNumber = Int((endNum - startNum + 1) * Rnd + startNum)
    
    ' B1セルにランダムな整数を代入
    Range("B1").Value = randomNumber
    
    ' B4セルの値をB5セルに値として貼り付け
    Range("B5").Value = Range("B4").Value
    
    ' B5セルの内容に含まれるカタカナを太字にする
    BoldKatakanaInCell Range("B5")
    
    ' B7セルのフォント色を白色にする
    Range("B7").Font.Color = RGB(255, 255, 255)
End Sub

Sub BoldKatakanaInCell(cell As Range)
    Dim i As Integer
    Dim char As String
    Dim text As String
    
    ' セル内の既存の太字を解除
    cell.Font.Bold = False
    
    ' セルの値を取得
    text = cell.Value
    
    ' 文字列内の各文字を確認してカタカナを太字にする
    For i = 1 To Len(text)
        char = Mid(text, i, 1)
        If IsKatakana(char) Then
            cell.Characters(i, 1).Font.Bold = True
        End If
    Next i
End Sub

Function IsKatakana(char As String) As Boolean
    ' 文字がカタカナかどうかを判定
    IsKatakana = (char >= "ァ" And char <= "ン") Or (char = "ヴ") Or (char >= "ガ" And char <= "ゴ") Or (char >= "ザ" And char <= "ゾ") Or (char >= "ダ" And char <= "ド") Or (char >= "バ" And char <= "ボ") Or (char >= "パ" And char <= "ポ")
End Function

そして、

‘ B7セルのフォント色を白色にする
Range(“B7”).Font.Color = RGB(255, 255, 255)

を活用して、新たに「答えを見る」ボタンを作り、それを押すと、B7セルの文字色を赤色になるようなマクロを別途作ります。

Sub ChangeFontColorToRed()

    ' B7セルのフォント色を赤色にする
    Range("B7").Font.Color = RGB(255, 0, 0)
End Sub

これで、文字色が赤になり、解答が表示されます。

※完成イメージは後述の「完成形」の動画を参照ください。

完成形

上記のように編集すると、以下のような漢字練習ファイルの完成です。

完成形

これで、千本ノックのように漢字練習を実施することができます!

※ChatGPTの回答精度によっては、例文がおかしいこともありますので、適宜修正してくださいね。

まとめ

今回の内容では、ExcelとVBAを使って漢字学習を効率化する方法を紹介しました。

ランダムな整数の生成、VLOOKUP結果のコピー、カタカナの太字化、セルのフォント色の変更といったステップを通じて、学習を自動化する手順をお伝えしました。

このファイルが漢字学習の一助になればうれしいです。またChatGPTを使えばこういった学習ツールも自分で作れることがわかりましたね。これからも活用したいと思います!

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA