[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『数字を漢数字になおしたい』(Po)
色々と試しているのですが、出来なくて困っています。
年賀状の印刷フォーマットをエクセルにて作成しました。
sheet1に住所録があり、sheet2に年賀状印刷フォーマットがあります。
sheet2には、=IF($AF$6="","",VLOOKUP($AF$6,sheet1!$A$4:$W$196,20,FALSE))
といった形でsheet1のデータを持ってきています。
住所録の数字は数字です、
これをsheet2(印刷する時でもかまいません)では漢数字で表示したいのですが
どうしたら良いのでしょうか?
最初に印刷用の住所を作っておけばいいんじゃないのかな。 と、思った。 BJ
このデータは既に数字で住所が入力されているもので、500件近くあります。
これを数字に直すとなると大変で・・・・
漢数字と言ってもいろいろあります。 1980 → 一九八〇 千九百八十 etc.
一九八〇 とするなら、1→一、2→二のように置換10回でできますが、 それもやりたくない? (奈々氏)
【関連ログ】 [[20090213123857]] 『数字を漢数字の変換』(歩く) [[20080310233015]] 『ユーザー定義で設定した書式が保存されない』(かあさん) [[20070527184508]] 『住所内算用数字を印刷時漢数字にしたい。』(ひろぴょん) [[20061123094713]] 『住所録の数字を漢数字へ』(大沢) [[20051216235844]] 『住所録をはがき印刷』(きなこ) [[20040831130230]] 『数字を漢数字にするにはどうしたら?』(とんぼ) (みやほりん)(-_∂)b
面白そうなのでユーザー定義関数を作ってみました。
以下のコードを標準モジュールに配置して 1234 → 千二百三十四 なら =IF($AF$6="","",TextNumToKanji(VLOOKUP($AF$6,Sheet1!$A$4:$W$196,20,FALSE),TRUE))
1234 → 一二三四 なら =IF($AF$6="","",TextNumToKanji(VLOOKUP($AF$6,Sheet1!$A$4:$W$196,20,FALSE),FALSE))
として使ってみてください。
'文字列内の数字を漢数字にするUDF
'h = True : 1234 → 千二百三十四
'h = False: 1234 → 一二三四
Function TextNumToKanji(ByVal txt As String, Optional h As Boolean = True) As String
Dim i As Long, buf As Variant, flg As Boolean
For i = 1 To Len(txt)
If IsNumeric(Mid$(txt, i, 1)) Then
Mid$(txt, i, 1) = StrConv(Mid$(txt, i, 1), vbNarrow)
flg = True
End If
Next i
If flg = False Then
TextNumToKanji = txt
Exit Function
End If
If h = True Then
buf = SplitStrLong(txt)
For i = 0 To UBound(buf)
If IsNumeric(buf(i)) Then
buf(i) = Application.WorksheetFunction.Text(buf(i), "[DBNum1]")
End If
Next i
TextNumToKanji = Join(buf, "")
Else
For i = 1 To 10
txt = Replace(txt, _
Choose(i, "0", "1", "2", "3", "4", "5", "6", "7", "8", "9"), _
Choose(i, "〇", "一", "二", "三", "四", "五", "六", "七", "八", "九"))
Next i
TextNumToKanji = txt
End If
End Function
'文字列中の文字と数字を分離するUDF
Function SplitStrLong(ByVal 分割文字列 As Variant, _
Optional 配列返し As Boolean = True, _
Optional 区切り文字 As String = vbTab) As Variant
Dim myReg As Object, m As Object, buf As String
With CreateObject("VBScript.RegExp")
.Pattern = "^[^\d]+|^\d+"
.Global = True
Do
Set myReg = .Execute(分割文字列)
For Each m In myReg
SplitStrLong = SplitStrLong & 区切り文字 & m.Value
分割文字列 = Replace(分割文字列, m.Value, "", , 1)
Next m
Loop While myReg.Count > 0
End With
SplitStrLong = Mid$(SplitStrLong, Len(区切り文字) + 1)
If 配列返し Then SplitStrLong = Split(SplitStrLong, 区切り文字)
End Function
(momo)
希望通りのものが出来ましたっ!凄いです!
本当にありがとうございます。
一個だけ質問なのですが、
ハガキ印刷をするので縦書きで設定しています。
四−十五の様に−が縦書きでも−のままなのですが、
このハイフンを縦にする方法はありますか?
ワードなら縦中横とかあるので簡単ですが、エクセルはそういうのが苦手なので =SUBSTITUTE(A1,"−","|") くらいしか思いつきませんが・・・ A1の所に元データ、もしくは前述のVLOOKUP関数を。 (momo)
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.