[[20040430152014]] 『漢数字を算用数字に変換する方法』(masabou5) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『漢数字を算用数字に変換する方法』(masabou5)

一二三-四五六七・・・ 等の漢数字を算用数字(123-4567)のように変換する方法はありませんか?

VBAでも結構です。よろしくお願いします。


 For Each c In Selection
  c.Offset(, 1).Value = StrConv(Application.GetPhonetic(c.Value), vbNarrow)
 Next c
こんなので、いかがでしょう。
選択セルの右隣の列へ書き出します。
複数列で選択しないようにしてください。
(KAMIYA)

 KAMIYAさん、こんばんワ。やってみたんですが、右隣の列に[ヒフミーヨンゴロクシチ]
と半角で表示されます。オラのやり方が悪いのでしょうか?詳しく全文載せてくださいませんか。 
          masabou5さん、横から失礼します(kobi)

 A1セルの漢数字+"-" を 数字+"-"に直してB1セルに表示します。
見ての通り、一文字ずつの変換です。
Sub 漢数字変換()
Dim 文字 As String
Dim 漢数字 As String
Dim 文字数 As Integer
Dim i As Integer
文字 = Cells(1, 1).Value
文字数 = Len(文字)
For i = 1 To 文字数
    If Mid(文字, i, 1) = "一" Then
    漢数字 = 漢数字 + "1"
    End If
    If Mid(文字, i, 1) = "二" Then
    漢数字 = 漢数字 + "2"
    End If
    If Mid(文字, i, 1) = "三" Then
    漢数字 = 漢数字 + "3"
    End If
    If Mid(文字, i, 1) = "四" Then
    漢数字 = 漢数字 + "4"
    End If
    If Mid(文字, i, 1) = "五" Then
    漢数字 = 漢数字 + "5"
    End If
    If Mid(文字, i, 1) = "六" Then
    漢数字 = 漢数字 + "6"
    End If
    If Mid(文字, i, 1) = "七" Then
    漢数字 = 漢数字 + "7"
    End If
    If Mid(文字, i, 1) = "八" Then
    漢数字 = 漢数字 + "8"
    End If
    If Mid(文字, i, 1) = "九" Then
    漢数字 = 漢数字 + "9"
    End If
    If Mid(文字, i, 1) = "〇" Then
    漢数字 = 漢数字 + "0"
    End If
    If Mid(文字, i, 1) = "-" Then
    漢数字 = 漢数字 + "-"
    End If
Next i
Cells(1, 2).Value = 漢数字
End Sub
 何のテクニックもないコードです (マーヤ)


 >kobiさん
getphoneticは入力状況に左右されるようです。
そーか、そういう風に入力して辞書変換すると、確かに使えませんねぇ。
「ヒフミーヨンゴロクシチ」はそのように入力されているのが
目に浮かびます。「フリガナ」に「123」になっていても
見事に「ヒフミ」になってしまいます。
ケンショウブソクのため「却下」でお願いします。
他の方法考えてみます。
(KAMIYA)

 ありゃ、また横から入って迷惑かけてる?そーか、数字で入力してあるのか・・・・
でも再現できず、。。。  頭も連休 (kobi)  

 というわけで(?)雪辱戦です。
範囲選択して実行してください。セルの漢数字を半角アラビア数字に
置き換えます。ついでにハイフォンも半角にします。

 Sub 漢数字TOアラビア数字()
 Dim i As Integer
 Dim c As Range
 Dim vardata(0 To 9) As String

     For i = 0 To 9
         vardata(i) = Mid("〇一二三四五六七八九", i + 1, 1)
     Next i

     For Each c In Selection
         For i = 0 To 9
             c.Value = WorksheetFunction.Substitute(c.Value, vardata(i), i)
         Next i
         c.Value = StrConv(c.Value, vbNarrow)
     Next c

 End Sub
(KAMIYA)


 これと同じ質問を以前にみたけど、そのときのmasabou5さんとは違う人なりか?
 それともこの時とは違う質問?
 (ramrun) 

[[20030904062745]]『住所録の三−八八などを3−88のように』(masabou5)


 出かけていて御礼が遅くなり、すみませんでした。
 KAMIYAさん、マーヤさん、kobiさん、ありがとうございました。
 確認できました。お陰様で簡単に変換することが出来ました。

 尚、ramrumさん、おっしゃるとおり同一人物です。あの時はまだよく理解できず、
 又同じような質問を出してしまいました。すみませんでした。
 しかし、マクロとユーザ定義関数の両方を理解することが出来ました。
 心から感謝申し上げます。(masabou5)

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.