Excelで漢数字を数値に変換する方法を教えてください。正確にいいますと、数字は半角でも単位が漢数字の万進を使用しているデータを数値に変換したいと思っています。たとえば、セルに「1億円」と入力されていたら、「100,000,000」と変換したいです。

変換したいデータは、「億円」だけでなく、「万円」、「兆円」も含まれています。
よろしくお願いいたします。

回答の条件
  • URL必須
  • 1人2回まで
  • 13歳以上
  • 登録:2010/03/14 17:36:09
  • 終了:2010/03/14 18:50:07

ベストアンサー

id:HALSPECIAL No.3

HALSPECIAL回答回数407ベストアンサー獲得回数862010/03/14 18:27:23

ポイント40pt

兆円、億円、万円 のみで良いのなら、

ユーザー定義関数を使って、次のようにできます。

VBAは使えますか?

Option Explicit

Public Function 変換(ByVal cell As Range) As Double
    Dim str As String
    str = cell.Value
    
    str = StrConv(str, vbNarrow) '念のため半角
    str = Replace(str, "兆円", " * 1000000000000")
    str = Replace(str, "億円", " * 100000000")
    str = Replace(str, "万円", " * 10000")
    
    変換 = Application.Evaluate(str)

End Function

この関数を標準モジュールに記述します。


使用例

A1のセルに、2.5億円

という風に、小数で、すべて全角で入力してみます。

B1のセルに、

= 変換(A1)

という風に数式を入力します。


なお、セルの表示形式を、カンマ表示で表示できるように設定してください。

id:konakonan

うまくいきました!!

ありがとうございます。”*10000”で置換するというアイディアは目からうろこでした。

2010/03/14 18:48:39

その他の回答(2件)

id:GreenStar No.1

GreenStar回答回数192ベストアンサー獲得回数462010/03/14 18:01:27

ポイント20pt

ゼロの数を数えるためカンマを入れてありますが、VALUEで数値に変換した時点でカンマは無視されます!!

カンマが必要ならセルの書式で設定しておいてください!!

=VALUE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A1,"万円","0,000"),"億円","00,000,000"),"兆円","00,000,000,000"))

http://www.eurus.dti.ne.jp/~yoneyama/Excel/kansu/moji_2.htm#subs...

id:konakonan

早速ありがとうございます!

しかし、パターン2のような小数データが一部含まれており、エラーになってしまいます。

パターン1 12兆円  → ¥1,200,000,000,000

パターン2 12.3兆円 → #VALUE!

こういう場合は文字列置換ではうまくいかないのでしょうか?

2010/03/14 18:08:54
id:kia_44 No.2

きあ回答回数396ベストアンサー獲得回数302010/03/14 18:24:52

ポイント20pt

=MID(A1,1,IF(ISERROR(FIND("兆",$A1)),0,FIND("兆",$A1))-1)*1000000000000+MID(A1,IF(ISERROR(FIND("兆",$A1)),0,FIND("兆",$A1))+1,IF(ISERROR(FIND("億",$A1)),0,FIND("億",$A1))-IF(ISERROR(FIND("兆",$A1)),0,FIND("兆",$A1))-1)*100000000+MID(A1,IF(ISERROR(FIND("億",$A1)),0,FIND("億",$A1))+1,IF(ISERROR(FIND("万",$A1)),0,FIND("万",$A1))-IF(ISERROR(FIND("億",$A1)),0,FIND("億",$A1))-1)*10000



一足遅れたけどこれでどおでしょう。計算してるんでたぶん小数点も行けるかな?

http://q.hatena.ne.jp/answer

id:konakonan

ありがとうございます。しかし、#VALUE!のままでした。なぜでしょうか?

2010/03/14 18:47:23
id:HALSPECIAL No.3

HALSPECIAL回答回数407ベストアンサー獲得回数862010/03/14 18:27:23ここでベストアンサー

ポイント40pt

兆円、億円、万円 のみで良いのなら、

ユーザー定義関数を使って、次のようにできます。

VBAは使えますか?

Option Explicit

Public Function 変換(ByVal cell As Range) As Double
    Dim str As String
    str = cell.Value
    
    str = StrConv(str, vbNarrow) '念のため半角
    str = Replace(str, "兆円", " * 1000000000000")
    str = Replace(str, "億円", " * 100000000")
    str = Replace(str, "万円", " * 10000")
    
    変換 = Application.Evaluate(str)

End Function

この関数を標準モジュールに記述します。


使用例

A1のセルに、2.5億円

という風に、小数で、すべて全角で入力してみます。

B1のセルに、

= 変換(A1)

という風に数式を入力します。


なお、セルの表示形式を、カンマ表示で表示できるように設定してください。

id:konakonan

うまくいきました!!

ありがとうございます。”*10000”で置換するというアイディアは目からうろこでした。

2010/03/14 18:48:39
  • id:GreenStar
    美しくないけど、作ったので! 改行してあるけど実際は一行!!
    =IF(ISERROR(FIND("万円",A1)), IF(ISERROR(FIND("億円",A1)), IF(ISERROR(FIND("兆円",A1)), 0, 10^11), 10^8), 10^4)
    * VALUE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A1,"万円",""),"億円",""),"兆円",""))
  • id:kia_44
    >#VALUE!のままでした。なぜでしょうか?
    ごめんなさい。0のときの処理が漏れていました。

    ポイントもらってますので直しました。もちろん1行です(笑)
    円は置換で消してからA1に値をいれるってことで、

    =IF(IF(ISERROR(FIND("兆",A1)),0,FIND(" 兆",A1))=0,0,MID(A1,1,IF(ISERROR(FIND("兆",A1)),0,FIND(" 兆",A1))-1))*1000000000000+IF(ISERROR(MID(A1,IF(ISERROR(FIND(" 兆",A1)),0,FIND("兆",A1))+1,IF(ISERROR(FIND("億",A1)),0,FIND(" 億",A1))-IF(ISERROR(FIND("兆",A1)),0,FIND(" 兆",A1))-1)),0,MID(A1,IF(ISERROR(FIND("兆",A1)),0,FIND(" 兆",A1))+1,IF(ISERROR(FIND("億",$A1)),0,FIND("億",A1))-IF(ISERROR(FIND(" 兆",A1)),0,FIND("兆",A1))-1))*100000000+IF(IF(ISERROR(FIND(" 万",A1)),0,FIND("万",A1))=0,0,MID(A1,IF(IF(ISERROR(FIND("億",A1)),0,FIND(" 億",A1))=0,IF(ISERROR(FIND("兆",A1)),0,FIND("兆",A1))+1,IF(ISERROR(FIND(" 億",A1)),0,FIND("億",A1))+1),IF(ISERROR(FIND("万",A1)),0,FIND(" 万",A1))-IF(IF(ISERROR(FIND("億",A1)),0,FIND("億",A1))=0,IF(ISERROR(FIND(" 兆",A1)),0,FIND("兆",A1)),IF(ISERROR(FIND("億",A1)),0,FIND(" 億",A1)))-1))*10000

    億などの文字で切り出し、億=100000000で掛けてます。
    しかしながら切り出しよりも置換の方がスマートですね。

    100兆10億130万
    100兆10億
    100兆130万
    10億130万
    130万
    ↑の全部変換できました。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません