[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『数字を漢数字になおしたい』(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.