変換したいデータは、「億円」だけでなく、「万円」、「兆円」も含まれています。
よろしくお願いいたします。
兆円、億円、万円 のみで良いのなら、
ユーザー定義関数を使って、次のようにできます。
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)
という風に数式を入力します。
なお、セルの表示形式を、カンマ表示で表示できるように設定してください。
ゼロの数を数えるためカンマを入れてありますが、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...
早速ありがとうございます!
しかし、パターン2のような小数データが一部含まれており、エラーになってしまいます。
パターン1 12兆円 → ¥1,200,000,000,000
パターン2 12.3兆円 → #VALUE!
こういう場合は文字列置換ではうまくいかないのでしょうか?
=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
一足遅れたけどこれでどおでしょう。計算してるんでたぶん小数点も行けるかな?
ありがとうございます。しかし、#VALUE!のままでした。なぜでしょうか?
兆円、億円、万円 のみで良いのなら、
ユーザー定義関数を使って、次のようにできます。
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)
という風に数式を入力します。
なお、セルの表示形式を、カンマ表示で表示できるように設定してください。
うまくいきました!!
ありがとうございます。”*10000”で置換するというアイディアは目からうろこでした。
うまくいきました!!
ありがとうございます。”*10000”で置換するというアイディアは目からうろこでした。