Excelのユーザー定義関数で文字混じりの数字を漢数字に変換する方法
※99,999までです。
Excelを使って日常業務をこなしていると、時々数字を漢数字に変換したいという状況が生じることがあります。例えば、「11月」を「十一月」や、「8丁目」を「八丁目」に変換したい場合などです。この記事では、Excelのユーザー定義関数を使って、セルの値の数字部分を漢数字に変換する方法を紹介します。
ユーザー定義関数の作成方法
Excelのユーザー定義関数を作成するには、以下の手順に従ってください。
- Excelを開いて、[Alt] + [F11] キーを押してVBAエディタを開きます。
- 左上の[挿入]メニューから[標準モジュール]を選択して、新しいモジュールを追加します。
- 新しいモジュールのコードウィンドウに、ユーザー定義関数のコードを貼り付けます。
- VBAエディタを閉じてワークシートへ戻ります。
以下に示すのは、数字部分を漢数字に変換するユーザー定義関数のコードです。コードウィンドウに貼り付けて使用してください。
Function ConvertToKanjiNumProper(target As String) As String
Dim i As Long
Dim char As String
Dim result As String
Dim number As String
For i = 1 To Len(target)
char = Mid(target, i, 1)
If IsNumeric(char) Then
number = number & char
Else
If Len(number) > 0 Then
result = result & ConvertNumberToKanji(CLng(number))
number = ""
End If
result = result & char
End If
Next i
If Len(number) > 0 Then
result = result & ConvertNumberToKanji(CLng(number))
End If
ConvertToKanjiNumProper = result
End Function
Function ConvertNumberToKanji(num As Long) As String
Dim kanjiDigits() As String
Dim kanjiUnits() As String
Dim numberStr As String
Dim i As Long
Dim temp As String
kanjiDigits = Split("〇 一 二 三 四 五 六 七 八 九", " ")
kanjiUnits = Split(" 十 百 千 万 億 兆", " ")
numberStr = Trim(Str(num))
If num = 0 Then
ConvertNumberToKanji = kanjiDigits(0)
Exit Function
End If
For i = 1 To Len(numberStr)
If Val(Mid(numberStr, i, 1)) <> 0 Then
temp = temp & kanjiDigits(Val(Mid(numberStr, i, 1)))
If i < Len(numberStr) Then
temp = temp & kanjiUnits(Len(numberStr) - i)
End If
End If
Next i
ConvertNumberToKanji = temp
End Function
上記のユーザー定義関数を使うと、例えば「11月」が「十一月」、「8丁目」が「八丁目」に正しく変換されます。
※99,999までです。
関数の使い方
関数を使ってセルの値を変換する方法を以下に説明します。
- Excelのシートで、変換したい値が入力されたセルを選択します。
- セルに以下のように関数を入力します。
=ConvertToKanjiNumProper(A1)
ただし、A1は変換対象のセルを示しています。 - もしくは「関数の挿入」ボタンから「関数の分類:ユーザー定義」を選び「ConvertToKanjiNumProper」を選択します。引数にはA1を指定します。
- 確定すると、変換結果が表示されます。
この関数を使って、あらゆる数値を含むセルの値を漢数字に置き換えることができます。
まとめ
この記事では、Excelのユーザー定義関数を使って、セルの値の数字部分を漢数字に変換する方法を紹介しました。この便利な関数を使って、日常業務をより効率化しましょう。
コメント