A 回答 (4件)
- 最新から表示
- 回答順に表示
No.4
- 回答日時:
こんばんは。
即席で、マクロを作ってみました。
ThisDocument か、標準モジュールに登録してご利用ください。
まだ、試験段階ですが、この両方の漢数字を、対象にして、ThisDocument 内の全ての漢数字を変換します。
例:
一二三四五六七八九〇
十二億三千四百五十六万七千八百九十
なお、現在は、コンマ切りはしていません。
リクエストによって、直します。
マクロ名は、Kansu2Suji_henkan
Option Explicit
Sub Kansu2Suji_henkan()
Dim t As Integer, myMsg As String
Dim moji As String
Selection.HomeKey Unit:=wdStory '文書の先頭に
On Error GoTo Errmsg:
With Selection.Find
.ClearFormatting
.Text = ""
.Replacement.Text = ""
.MatchFuzzy = False
While .Execute(FindText:="[一二三四五六七八九兆億万千百十〇]{1,}", _
Wrap:=wdFindContinue, MatchWildcards:=True) = True
moji = Selection.Range
Selection.Range = Kansu2SujiDec(moji)
t = t + 1
If t = 0 Then GoTo Msg
Wend
Msg:
Selection.HomeKey Unit:=wdStory '文書の先頭に
If t > 0 Then
myMsg = t & "語、変換しました。"
Else
myMsg = "変換するべき数字はありません"
End If
MsgBox myMsg, , Title:="漢数字からアラビア数字に"
End With
Exit Sub
Errmsg:
MsgBox "エラー!: " & Err.Description, vbExclamation
End Sub
Private Function Kansu2SujiDec(ByVal moji As String)
Dim i As Integer, k As Integer, m As Integer, j As Integer
Dim fig As Double, buf As Double, bufk(1 To 3)
Dim sum As Double, f As Variant, s As String
Const keta1 As String = "〇一二三四五六七八九"
If moji Like "[" & keta1 & "]" & "[" & keta1 & "]*" Then
s = moji
For j = 0 To Len(keta1) + 1
s = Replace(s, Mid(keta1, j + 1, 1), CStr(j))
Next j
Kansu2SujiDec = CDbl(s)
Else
For i = 1 To Len(moji)
fig = myFindfig(Mid(moji, i, 2), k, m)
If m > 0 Then
bufk(m) = buf * fig
buf = Empty
Else
buf = buf + fig
End If
i = i + k
k = 0: m = 0
Next i
For Each f In bufk
sum = sum + f
Next
Kansu2SujiDec = sum + buf
End If
End Function
Private Function myFindfig(ByRef s As String, k As Integer, m As Integer)
Dim lc1 As Integer, lc2 As Integer, lc3 As Integer
Const keta1 As String = "一二三四五六七八九"
Const keta2 As String = "十百千"
Const keta3 As String = "万億兆"
If s Like "[" & keta1 & "]" & "[" & keta2 & "kata3" & "]" Then
k = 1
lc1 = InStr(keta1, Left$(s, 1))
lc2 = InStr(keta2, Right$(s, 1))
lc3 = InStr(keta3, s)
If lc2 > 0 Then
myFindfig = 10 ^ lc2 * lc1
ElseIf lc3 > 0 Then
myFindfig = 10 ^ (4 + lc3 * 4)
End If
Else
lc1 = InStr(keta1, Left(s, 1))
lc2 = InStr(keta2, Left(s, 1))
lc3 = InStr(keta3, Left(s, 1))
If lc3 > 0 Then m = lc3
myFindfig = lc1 - (lc2 <> 0) * 10 ^ lc2 - (lc3 <> 0) * 10 ^ (lc3 * 4)
End If
End Function
No.3
- 回答日時:
どれくらいの数があるのかわかりませんが、「編集」の「変換」で漢数字を数字に変換するのはどうでしょうか?
例えば、「三」を「3」に「五」を「5」に、「十」は「」(なし)にすれば、
もしくはダイレクトに「三十五」を「35」にする。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- デスクトップパソコン 40年間の悩み キーボードにおいて初期値として漢字ローマ字変換に設定する方法 8 2023/05/08 14:50
- ノートパソコン ”IMEが無効です” というメッセージが出ます! 4 2023/05/02 09:56
- その他(コンピューター・テクノロジー) 【Tableau Desktop】文字列から8桁の数字を日付型(yyyyMMdd)として取得 1 2023/07/31 10:17
- Word(ワード) ワードで,特定の文字だけ,字体を一括変換する方法は? 1 2023/04/26 10:11
- Visual Basic(VBA) 特定の文字を簡単な操作で半角スペースに変換するか削除したい 2 2022/11/01 10:35
- 日本語 なぜ「壊石料理」と記述するのでしょうか? 26 2023/06/17 13:01
- マウス・キーボード 教えて! AppleのMagic Keyboard(JIS)をWindows 10で使用次第のですが 2 2022/06/01 18:07
- Excel(エクセル) Excelについて 7 2023/03/12 17:01
- Excel(エクセル) エクセル関数の変わった使い方 3 2022/05/13 17:12
- Visual Basic(VBA) EXCEL VBAで教えてください。 1 2022/12/22 04:20
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
緯度・経度の値をエクセルで変...
-
エクセル関数/10進法から60進法...
-
意外に?以外に??どちらが正...
-
Windows Media PlayerからMP3に...
-
インディアン語で太陽は何て言...
-
MP3を楽譜に変換するサイト、ア...
-
PDFファイルのプロパティ内容削...
-
エクセル DEC2BIN 範囲外数値の...
-
PNGファイルをSVGにロスなしで...
-
NTSC と PAL の確認...
-
漢数字を算用数字に変換したい...
-
紙とWeb両方で使用する場合のカ...
-
単位の リューベ って
-
使っている水質検査の紙がmg/L...
-
スプレッドシートから、スプレ...
-
itunesから音楽CDへ書き込みし...
-
pdfの色データをCMYK→K+Cの2色...
-
アイコンの大きさを変える方法...
-
movをmp4に変換すると白飛びし...
-
デザイン
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
緯度・経度の値をエクセルで変...
-
エクセル関数/10進法から60進法...
-
MP3を楽譜に変換するサイト、ア...
-
意外に?以外に??どちらが正...
-
つらそう…を丁寧に言うなら、お...
-
PDFファイルのプロパティ内容削...
-
名前を数字にしたい。
-
miniSD変換アダプタ
-
CPU 100%
-
VB.NETで小数点以下の桁数を取...
-
スクリーンショット:文字がぼ...
-
土日祝 の正しい読みは
-
スプレッドシートから、スプレ...
-
スマホで、「いま」と打てば今...
-
Wordに囲い文字というのがない...
-
クリスタでCMYKのデータを読み...
-
Windows Media PlayerからMP3に...
-
漢数字を算用数字に変換したい...
-
勝手に無変換になる
-
使っている水質検査の紙がmg/L...
おすすめ情報