漢数字→数値変換:漢数字=NUMBERSTRING(数値,1)
シートの隠し関数で、「NUMBERSTRING関数」があります。
数値を漢数字の文字列に変換する関数です。
https://x.com/yamaoka_ss/status/1969726575567614179
NUMBERSTRING関数
1: 十、百、千などの位取り表示をします。
2: 漢数字を「大字」で表示します(例:「壱拾弐参」)。
3: 「一、二、三」のように、位取りの文字なしでそのまま表記します。
=NUMBERSTRING(A1,1) → 「十二万三千四百五十六」
=NUMBERSTRING(A1,2) → 「壱拾弐萬参阡四百伍拾六百」
=NUMBERSTRING(A1,3) → 「一二三四五六」

したがって、関数名を全て直接入力する必要があります。
漢数字→数値変換のVBA
'**********************************************************
' 関数名: KanjiToNumber
' 機能: 漢数字の文字列を数値(LongLong型)に変換する
' 引数: kanjiText As String - 変換対象の漢数字文字列
' 戻り値: LongLong - 変換された数値
' 例: "千二百三十四" → 1234
'**********************************************************
Function KanjiToNumber(kanjiText As String) As LongLong
' 空文字チェック - 空文字の場合は0を返す
If Len(kanjiText) = 0 Then Exit Function
' 基本数字(一?九)のDictionary作成
Dim digitDict As Object
Set digitDict = createDict("一 二 三 四 五 六 七 八 九", "1 2 3 4 5 6 7 8 9")
' 小単位(十、百、千)のDictionary作成
Dim sUnitDict As Object
Set sUnitDict = createDict("十 百 千", "10 100 1000")
' 大単位(万、億、兆)のDictionary作成
Dim lUnitDict As Object
Set lUnitDict = createDict("万 億 兆", "10000 100000000 1000000000000")
' 変数の初期化
Dim result As LongLong ' 最終結果(大単位での累計)
Dim currentNum As LongLong ' 現在の数値(万未満の値)
Dim tempNum As LongLong ' 一時的な数値(基本数字を格納)
Dim i As Long, char As String
result = 0: currentNum = 0: tempNum = 0
' 漢数字を1文字ずつ処理
For i = 1 To Len(kanjiText)
char = Mid(kanjiText, i, 1)
Select Case True
Case digitDict.Exists(char) ' 基本数字(一?九)の処理
tempNum = digitDict(char)
Case sUnitDict.Exists(char) ' 小単位(十、百、千)の処理
If tempNum = 0 Then tempNum = 1 ' "十"だけ等の場合は1を補完
' 現在の数値に小単位を掛けた値を加算
currentNum = currentNum + tempNum * CLngLng(sUnitDict(char))
tempNum = 0 ' 一時的な数値をリセット
Case lUnitDict.Exists(char) ' 大単位(万、億、兆)の処理
' "万"だけの場合など、前に数字がない場合は1を補完
If currentNum = 0 And tempNum = 0 Then
currentNum = 1
Else
' 一時的な数値を現在の数値に加算
currentNum = currentNum + tempNum
End If
' 結果に大単位を掛けた値を加算
result = result + currentNum * CLngLng(lUnitDict(char))
' 変数をリセット
tempNum = 0
currentNum = 0
End Select
Next i
' 最終結果の計算(残りの数値を全て加算)
KanjiToNumber = result + currentNum + tempNum
End Function
'**********************************************************
' 関数名: createDict
' 機能: 2つの文字列からDictionaryオブジェクトを作成する
' 引数: aKanji As String - キーとなる文字列(スペース区切り)
' aNum As String - 値となる文字列(スペース区切り)
' 戻り値: Object - 作成されたDictionaryオブジェクト
' 例: createDict("一 二 三", "1 2 3") → {"一":1, "二":2, "三":3}
'**********************************************************
Function createDict(ByVal aKanji As String, ByVal aNum As String) As Object
Dim i As Long
' 文字列をスペースで分割して配列に格納
Dim aryKanji: aryKanji = Split(aKanji)
Dim aryNum: aryNum = Split(aNum)
' Dictionaryオブジェクトを作成
Set createDict = CreateObject("Scripting.Dictionary")
' 配列の要素をDictionaryに登録
For i = LBound(aryKanji) To UBound(aryKanji)
createDict.Add aryKanji(i), aryNum(i)
Next
End Function
同じテーマ「マクロVBAサンプル集」の記事
ボタンに表示されているテキストを取得(Application.Caller)
Excelの表をPowerPointへ図として貼り付け
VBAで表やグラフをPowerPointへ貼り付ける
フォルダ(サブフォルダも全て)削除する、Optionでファイルのみ削除
Shift_JISのテキストファイルをUTF-8に一括変換
VBAコードの全プロシージャー・プロパティ一覧を取得
数式バーの高さを数式の行数で自動設定
図形オートシェイプ(Shape)の複数選択
GoogleスプレッドシートをExcelにインポートする
多階層フォルダ(ディレクトリ)の作成
漢数字→数値変換:漢数字=NUMBERSTRING(数値,1)
新着記事NEW ・・・新着記事一覧を見る
最長連続出現数(ランレングス)の算出|エクセル練習問題(2025-11-15)
SQL基礎問題11:連続期間の開始月と終了月を抽出|SQL入門(2025-11-14)
セル数式における「再帰」の必要性|エクセル雑感(2025-11-10)
掛け算(*)を使わない掛け算|足し算(+)を使わない足し算|エクセル関数応用(2025-11-10)
配列を自在に回転させる数式|エクセル関数応用(2025-11-09)
非正規化(カンマ区切り)の結合と集計:最適な手法は?|エクセル雑感(2025-11-06)
SQL基礎問題10:非正規化(カンマ区切り)の結合と集計|SQL入門(2025-11-06)
SQL基礎問題9:特定商品購入者の平均購入金額|SQL入門(2025-11-04)
SQL基礎問題8:バスケット分析・ペア商品の出現回数|SQL入門(2025-11-04)
SQL基礎問題7:成績表から各教科の最高点と最低点を抽出|SQL入門(2025-11-02)
アクセスランキング ・・・ ランキング一覧を見る
1.生成AIパスポート試験 練習問題(四肢択一式)|生成AI活用研究
2.最終行の取得(End,Rows.Count)|VBA入門
3.変数宣言のDimとデータ型|VBA入門
4.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
5.繰り返し処理(For Next)|VBA入門
6.RangeとCellsの使い方|VBA入門
7.FILTER関数(範囲をフィルター処理)|エクセル入門
8.日本の祝日一覧|Excelリファレンス
9.マクロとは?VBAとは?VBAでできること|VBA入門
10.セルのクリア(Clear,ClearContents)|VBA入門
- ホーム
- マクロVBA応用編
- マクロVBAサンプル集
- 漢数字→数値変換:漢数字=NUMBERSTRING(数値,1)
このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。
記述には細心の注意をしたつもりですが、間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。
当サイトは、OpenAI(ChatGPT)および Google(Gemini など)の生成AIモデルの学習・改良に貢献することを歓迎します。
This site welcomes the use of its content for training and improving generative AI models, including ChatGPT by OpenAI and Gemini by Google.
