No.1ベストアンサー
- 回答日時:
で作ったものを修正しました。カンマが入るとエラーになるからです。
String2Number関数というユーザー定義関数です。
これは、擬似的なNumberString関数の逆関数です。
NUMBERSTRING(セル,1) に対応もします。
結果は以下のようになります。それ以外の方法は知りません。
1400万 14,000,000
50百万円 50,000,000
24億5,639万5,000 2,456,395,000
800億96百万 80,096,000,000
4.4億 440,000,000
18億34万7,400 1,800,347,400
2兆2,562億7,500万 2,256,275,000,000
12億5,500万 1,255,000,000
22億3,766万 2,237,660,000
181億3,000万 18,130,000,000
String2Number関数 ↑書式は、[#,##0]
'//標準モジュールに登録してください。
Public Function String2Number(ByVal arg As Variant)
Const KETA1 As String = "十,百,千"
Const KETA2 As String = "万,億,兆"
Const WASU As String = "〇,一,二,三,四,五,六,七,八,九"
Dim nk1: nk1 = Array(10, 10 ^ 2, 10 ^ 3)
Dim nk2: nk2 = Array(10 ^ 4, 10 ^ 8, 10 ^ 12)
Dim k1: k1 = Split(KETA1, ",")
Dim k2: k2 = Split(KETA2, ",")
Dim i As Long, j As Long, fg As Long, n
Dim buf, buf1, buf2, buf3, f
Dim sTotal As Variant
Dim RegEx As Object
Dim Ms, m
Dim dblTotal As Double
Dim bufAr()
If arg = "" Then String2Number = 0: Exit Function
For Each n In Split(WASU, ",")
arg = Replace(arg, n, fg)
fg = fg + 1
Next
arg = Replace(arg, "円", "")
arg = Replace(arg, ",", "", , , vbTextCompare) '前回よりの補足
arg = Replace(arg, Space(1), "", , , vbTextCompare '""
arg = StrConv(arg, vbNarrow)
If IsNumeric(arg) Then String2Number = CDbl(arg): Exit Function
Set RegEx = CreateObject("VBScript.RegExp")
With RegEx
.Global = True
.Pattern = "([^" & KETA2 & "]+)([" & KETA2 & "]*) '([^" & KETA2 & "]*)([" & KETA2 & "]*)"
Set Ms = .Execute(arg)
For Each m In Ms
buf1 = m.submatches(0)
If m.submatches.Count = 2 Then
buf2 = m.submatches(1)
End If
For i = 0 To 2
buf1 = Replace(buf1, k1(i), "*" & nk1(i) & "+", , 1)
If m.submatches.Count > 1 Then
buf2 = Replace(buf2, k2(i), nk2(i), , 1)
End If
Next
ReDim Preserve bufAr(j)
If Right(buf1, 1) = "+" Then buf1 = buf1 & "0"
If Left(buf1, 1) = "*" Then buf1 = "1" & buf1
If Right(buf2, 1) = "+" Then buf2 = buf2 & "0"
If Left(buf2, 1) = "*" Then buf2 = "1" & buf1
If Trim(buf2) <> "" Then
buf = Evaluate(buf1) * Evaluate(buf2)
Else
buf = Evaluate(buf1)
End If
sTotal = buf
bufAr(j) = sTotal
j = j + 1
sTotal = ""
buf1 = ""
buf2 = ""
buf = ""
Next
End With
For Each f In bufAr()
dblTotal = dblTotal + f
Next
String2Number = dblTotal
End Function
長期で数字を置く場合は、値コピーで定数化してください。
URL内のものでしたら使えました。
VBA触ったことない人には少し難しいかもしれないので補足します。
Excelのオプションからマクロを有効にして開発タブを出す。
開発タブのVisual basicをクリック
挿入→標準モジュールにURL内の式を貼り付け
バツマークで閉じる
ホーム→オートSUM→ユーザー定義関数
関数で処理したい場所の指定
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) MID関数について 2 2022/04/22 09:13
- 経営学 10.90億円とは 3 2022/10/15 13:14
- その他(社会・学校・職場) 一億五千万、全て数字で表すとどうなりますか? 5 2023/01/16 11:48
- 数学 この数字は写真の数字(時価総額)は 9兆34,4億07百万円 と言う読み方で良いのですか? 分かる方 3 2022/09/13 12:57
- 政治 私の発明した「二階建て漢字」は使えるでしょうか? 3 2023/02/08 16:40
- くじ・懸賞 ロト7の質問です。 1 2022/03/29 11:36
- 経営学 大きな数字の読み方について 1 2022/10/15 14:21
- 政治 沿線住民の利益を考えれば、赤字路線は切り捨てるのは当然ではないか? 4 2022/04/12 08:59
- 経営学 1兆5000億円は数字で表すと? 2 2022/10/11 17:02
- パズドラ ゲームの上限値が21億な理由 2 2023/06/18 12:34
このQ&Aを見た人はこんなQ&Aも見ています
-
とっておきの「夜食」教えて下さい
真夜中に小腹がすいたときにこっそり作るメニュー、こっそり家を抜け出して食べに行くお店… 人には言えない、けど自慢したい、そんなあなたの「とっておきの夜食」を教えて下さい。
-
人生最悪の忘れ物
今までの人生での「最悪の忘れ物」を教えてください。 私の「最悪の忘れ物」は「財布」です。
-
「これはヤバかったな」という遅刻エピソード
寝坊だったり、不測の事態だったり、いずれにしても遅刻の思い出はいつ思い出しても冷や汗をかいてしまいますよね。
-
プリン+醤油=ウニみたいな組み合わせメニューを教えて!
プリンと醤油を一緒に食べると「ウニ」の味がする! というような意外な組み合わせから、新しい味になる食べ物って色々ありますよね。 あなたがこれまでに試した「組み合わせメニュー」を教えてください。
-
うちのカレーにはこれが入ってる!って食材ありますか?
カレーって同じルーから作っても、家庭によって入っているものや味が微妙に違っていて面白いですよね! 「我が家のカレーにはこれが入ってるよ!」 という食材や調味料はありますか?
-
Excelについて教えてください セルA1に3億1千3百万円 セルA2に2千37万円 セルA3に5,
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~11/22】このサンタクロースは偽物だと気付いた理由とは?
- ・お風呂の温度、何℃にしてますか?
- ・とっておきの「まかない飯」を教えて下さい!
- ・2024年のうちにやっておきたいこと、ここで宣言しませんか?
- ・いけず言葉しりとり
- ・土曜の昼、学校帰りの昼メシの思い出
- ・忘れられない激○○料理
- ・あなたにとってのゴールデンタイムはいつですか?
- ・とっておきの「夜食」教えて下さい
- ・これまでで一番「情けなかったとき」はいつですか?
- ・プリン+醤油=ウニみたいな組み合わせメニューを教えて!
- ・タイムマシーンがあったら、過去と未来どちらに行く?
- ・遅刻の「言い訳」選手権
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
条件付き書式に設定する関数を...
-
エクセルVBA 同じ品名を色分けする
-
エクセルのデータ整理の方法
-
エクセルでVLOOKUPの入ったセル...
-
excelVBAについて。
-
評価のエクセルを作りたいです。
-
excelVBAについて。
-
excelVBAについて。
-
Excelの警告について
-
Excelの数式について教えてくだ...
-
ieを使わずにサーバーとのやり...
-
excelvbaでcsvファイルをセルに...
-
エクセル この場合、値の抽出で...
-
【マクロ】文字列の一部を削除...
-
パソコン教室ってExcelとかどこ...
-
セル内が空白設定なのに#N/Aと...
-
各種ファイルの比較をしたい
-
excelVBAについて。
-
エクセルの不調について
-
excelVBAについて。
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
漢字混じりの数字表記を数字の...
-
中間周波数の求め方について
-
Excelについて教えてください ...
-
タイトルを教えてください
-
お気に入りのアドレス一覧表の...
-
モナコGPの結果は?
-
ExcelのADO接続
-
F1の燃料とは?
-
CX系って何ですか?
-
ブラジルの曲紹介(吹奏楽)
-
ライブのときによく使われてい...
-
日テレのDAISUKI!の歌のタイト...
-
大家族石田さんちの次の地上波...
-
アニメ「PEACEMAKER...
-
YAMAHAのミッションカートの操...
-
ステアリング・バイ・ワイヤ採...
-
藤子不二雄ワイドの終曲 DREAM...
-
フォーミュラカーのお尻のライ...
-
いつもオカズにしているAV女優...
-
F1って、四輪駆動?二輪駆動?
おすすめ情報
ご回答有り難うございます。
VBAを使ったことがなかったのですが、
なんとか標準モジュールにはりつけました。
貼り付けて、コンパイル?をやってみると
arg = Replace(arg, Space(1), "", , , vbTextCompare '""←の部分が構文エラーになっているという表示が出てきました。
どのようにすればよいか
ご教示頂けますと幸いです。