漢数字→数値変換:漢数字=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 ・・・新着記事一覧を見る
シンギュラリティ前夜:AIは機械語へ回帰するのか|生成AI活用研究(2026-01-08)
電卓とプログラムと私|エクセル雑感(2025-12-30)
VLOOKUP/XLOOKUPが異常なほど遅くなる危険なアンチパターン|エクセル関数応用(2025-12-25)
2段階の入力規則リスト作成:最新関数対応|エクセル関数応用(2025-12-24)
IFS関数をVBAで入力するとスピルに関係なく「@」が付く現象について|VBA技術解説(2025-12-23)
数値を記号の積み上げでグラフ化する(■は10、□は1)|エクセル練習問題(2025-12-09)
AI時代におけるVBAシステム開発に関する提言|生成AI活用研究(2025-12-08)
GrokでVBAを作成:条件付書式を退避回復するVBA|エクセル雑感(2025-12-06)
顧客ごとの時系列データから直前の履歴を取得する|エクセル雑感(2025-11-28)
ちょっと悩むVBA厳選問題|エクセル雑感(2025-11-28)
アクセスランキング ・・・ ランキング一覧を見る
1.最終行の取得(End,Rows.Count)|VBA入門
2.日本の祝日一覧|Excelリファレンス
3.変数宣言のDimとデータ型|VBA入門
4.FILTER関数(範囲をフィルター処理)|エクセル入門
5.RangeとCellsの使い方|VBA入門
6.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
7.繰り返し処理(For Next)|VBA入門
8.セルのクリア(Clear,ClearContents)|VBA入門
9.マクロとは?VBAとは?VBAでできること|VBA入門
10.条件分岐(Select Case)|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.
