小学3年生を、小学三年生にしたい

Excelで、「小学1年生」から「中学3年生」までのアラビア数字を、
漢数字に置き換えることになった。しかも、100回以上。

ということで急遽、関数を作ってみた。作戦は、こんな感じだ。

  1. 正規表現で、数字を抽出する。
  2. 抽出した数字を、漢数字に変換する。
  3. 変換ののち、元の数字と置換する。

作成してみよう。

Function 漢数字変換(src As Variant) As String
    Dim myReg As Object
    Set myReg = CreateObject("VBScript.RegExp")
        myReg.Pattern = "([0-90-9]+)"
        myReg.Global = True
    Dim MC As Object
    Dim i As Long
        If myReg.Test(src) Then
            Set MC = myReg.Execute(src)
            For i = 0 To MC.Count - 1
                src = Replace(src, MC(i), _
                      WorksheetFunction.Text(MC(i), "[DBNum1]0"))
            Next
        End If
        
        漢数字変換 = src
End Function

なお、正規表現の変数宣言については、このままコピペされることを想定して
遅延バインディングとした。

試してみた結果がこちら。

やれやれ、何とかなりそうだ。
と、一息ついた私に待っていたのは、新たに告げられたこんな追加条件だった。

「小学3年生」を、「小学生三年」にしてください。

何ですと?

さて、どうしたものか(次回に続きます)。

参考まで。