Excel VBA 数字を漢数字に変換する

スポンサーリンク

数字を漢数字に変換する方法

数値を計算ができる数値型のデータとして、漢数字に変更するには、Range【レンジ】オブジェクトのNumberFormatLocal【ナンバーフォーマットローカル】プロパティを使用します。また、数値を文字列に変換して漢数字に変更する場合は、ワークシート関数のText【テキスト】関数を使用します。

NumberFormatLocal【ナンバーフォーマットローカル】プロパティ

数値を計算ができる数値型の漢数字に変更するには、指定したセルやセル範囲の表示形式を取得または、設定するRange【レンジ】オブジェクトのNumberFormatLocal【ナンバーフォーマットローカル】プロパティを使用します。

NumberFormatLocal【ナンバーフォーマットローカル】プロパティの書式と設定値の説明

【設定】
オブジェクト.NumberFormatLocal = 書式

  • オブジェクト(必須)
    書式を設定するセルやセル範囲をRange【レンジ】オブジェクトで指定します。
  • 書式(必須)
    漢数字に変換する書式は以下の書式を文字列型(ダブルクオティーションで囲む)で指定します。

    書式内容
    [DBNum1]123 → 百二十三
    [DBNum1]#123 → 一ニ三
    [DBNum2]123 → 壱百弐拾参
    [DBNum2]#123 → 壱弐参
    G/標準数字に戻します。

A列の数字を数値型に漢数字に変換するコード例1と解説

Sub 漢数字変換1()
Dim セル範囲 As Range
Set セル範囲 = Range("A2", "A" & Cells(Rows.Count, 1).End(xlUp).Row)
  セル範囲.NumberFormatLocal = "[DBNum1]"
 Columns.AutoFit
End Sub
1行目【Dim セル範囲 As Range】
書式を変更するセル範囲を格納する変数「セル範囲」をオブジェクト型(Range)で宣言します。


2行目【Set セル範囲 = Range(“A2”, “A” & Cells(Rows.Count, 1).End(xlUp).Row)】
Range【レンジ】プロパティで項目行を除いたA2セルからA列のCells【セルズ】プロパティで参照した1列目のRows.Count【ロウズカウント】プロパティで参照した一番最後のセルからRange【レンジ】オブジェクトのEnd【エンド】プロパティでデータが入力された最終行に移動して、Row【ロウ】プロパティでその行番号を取得し、A2のセルからデータが入力されている最終行のセル、つまり、A列の項目行を除くデータが入力されている範囲を参照し、Set【セット】キーワードを使用してオブジェクト型変数「セル範囲」に代入します。


3行目【セル範囲.NumberFormatLocal = “[DBNum1]”】
A列のデータ範囲が格納されているオブジェクト変数「セル範囲」に対して、NumberFormatLocal【ナンバーフォーマットローカル】プロパティを使用して書式を設定します。


4行目【Columns.AutoFit】
数字を漢数字に変更すると文字幅が増えてセル幅に収まらなくなるので、Range【レンジ】オブジェクトのAuto【オートフィット】メソッドを使用してセルの幅を自動で調整します。幅を調整したい列を表すRange【レンジ】オブジェクトには、すべて列を表すColumns【カラムス】コレクションを指定します。


実行結果


A列の数字を数値型に漢数字に変換するコード例2

Sub 漢数字変換2()
Dim セル範囲 As Range
Set セル範囲 = Range("A2", "A" & Cells(Rows.Count, 1).End(xlUp).Row)
  セル範囲.NumberFormatLocal = "[DBNum1]#"
  Columns.AutoFit
End Sub

実行結果

A列に数字を数値型に漢数字に変換するコード例3

Sub 漢数字変換3()
Dim セル範囲 As Range
Set セル範囲 = Range("A2", "A" & Cells(Rows.Count, 1).End(xlUp).Row)
  セル範囲.NumberFormatLocal = "[DBNum2]"
  Columns.AutoFit
End Sub

実行結果

A列の数字を数値型に漢数字に変換するコード例4

Sub 漢数字変換4()
Dim セル範囲 As Range
Set セル範囲 = Range("A2", "A" & Cells(Rows.Count, 1).End(xlUp).Row)
  セル範囲.NumberFormatLocal = "[DBNum2]#"
  Columns.AutoFit
End Sub

実行結果

A列の漢数字を数値型に戻すコード例4

Sub 数字変換1()
Dim セル範囲 As Range
Set セル範囲 = Range("A2", "A" & Cells(Rows.Count, 1).End(xlUp).Row)
  セル範囲.NumberFormatLocal = "G/標準"
  Columns.AutoFit
End Sub

実行結果


Text【テキスト】関数

数値を文字列型の漢数字に変更するには、ワークシート関数のText【テキスト】関数を使用します。

Text【テキスト】関数の書式と設定値の説明

オブジェクト.Text(値,表示形式)

  • オブジェクト(必須)
    ワークシート関数のコンテナ(入れ物)を表すWorksheetFunction【ワークシートファンクション】プロパティで取得したWorksheetFunction【ワークシートファンクション】オブジェクトを指定します。
  • (必須)
    文字列型の指定した表示形式に変更する値を指定します。
  • 表示形式(必須)
    数値を文字列型の漢数字に変更する場合は以下の表示形式を指定します。

    書式内容
    [DBNum1]123 → 百二十三
    [DBNum1]#123 → 一ニ三
    [DBNum2]123 → 壱百弐拾参
    [DBNum2]#123 → 壱弐参
    G/標準数字に戻します。

A列の数字を文字列型に漢数字に変換するコード例

Sub 文字列変換()
Dim セル As Range
 For Each セル In Range("A2", "A" & Cells(Rows.Count, 1).End(xlUp).Row)
 セル.Value = WorksheetFunction.Text(セル.Value, "[DBNum1]")
 Next セル
 Columns.AutoFit
End Sub

実行結果


以上で、数字を漢数字に変換する方法についての解説を終了します。ありがとうございました。

スポンサーリンク

関連記事・広告