[[20180208101043]] 『「億」や「万」を使った数字表記について』(怠惰の清盛) ページの最後に飛ぶ

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

 

『「億」や「万」を使った数字表記について』(怠惰の清盛)

例えば、「1,234,567」を「123万4567」とか、「987,654,321」を「9億8765万4321」とかに変える作業をしたいと思っています。元の「1,234,567」や「987,654,321」は既に入力されたものがありますので、それを何らかの方法で「123万4567」や「9億8765万4321」に変換出来ないだろうかと思っています。何か良い方法はありませんでしょうか。よろしくお願いします。

< 使用 Excel:Excel2013、使用 OS:unknown >


 表示だけ変更でいいのか値そのものを変えたいかどちらだろうか?
(ねむねむ) 2018/02/08(木) 10:20

日本の単位は4桁区切りですが、他国は3桁区切りなので、Excel標準では良い方法が無いのですよ。 なので、マクロや数式を使い、4桁毎に単位文字列を挿入し別セルに出力するとかになります。(単位千円とか100万とか、3桁6桁で切った値で表を作っているのを見たことはありませんか? 多くの日本の会社は、こうやってExcelで数字を見ています)
(???) 2018/02/08(木) 10:25

 表示は条件付き書式で可能。
 値そのものの変更は数式で別セルなりマクロなりで。
(ねむねむ) 2018/02/08(木) 10:28

 一応補足。
 >表示は条件付き書式で可能。
 Excelのバージョンが2007以降であれば。
(ねむねむ) 2018/02/08(木) 10:41

ねむねむさん案の条件付き書式の場合、億だけとかならできますが、「9億8765万4321」が問題かと。

マクロを使う場合、数値の上限は幾つになりますかね? 21億までなら整数型が使えますが、整数型の範囲を超える数値も扱う場合は、少し工夫しないとです。
(???) 2018/02/08(木) 10:48


ねむねむ様
早速にありがとうございます。

表示だけ変更でいいのか値そのものを変えたいかどちらだろうか? 表示だけを変更したいと思っています。

表示は条件付き書式で可能。 条件付き書式で具体的にどのようにすれば可能でしょうか。ご教示頂ければ助かります。
「Excelのバージョンが2007以降であれば。」とのことですが、職場のExcelは2013なのですが、今自宅におり、自宅のExcelは2000ですので、今試してみることが出来ません。職場に行って試してみます。

???様
早速にありがとうございます。
元の値を今から入力するのであれば、3桁6桁で切った値で表を作れば良いのでしょうが、既に「1,234,567」のような形で入力されているものを「123万4567」のような形に変換したいと思っています。
例えばA1のセルに「1,234,567」と入っている場合に、B1のセルに百万から億までの3桁(前記の例なら「1」)、C1のセルに千から十万までの3桁(前記の例なら「234」)、D1のセルに壱から百までの3桁(前記の例なら「567」)を自動的に振り分けるようにする方法はありますでしょうか。
よろしくお願いします。
(怠惰の清盛) 2018/02/08(木) 10:56


 指定の値を含むセルだけを書式設定で
 セルの値 次の値より多きい =99999999 0"億"0000"万"0000
 セルの値 次の値より大きい =9999             0"万"0000
 ルールの管理のダイアログで上記の順番になるように。
(ねむねむ) 2018/02/08(木) 10:59

ねむねむ様
ありがとうございます。
今居る自宅のExcelは2000のため試してみることが出来ませんが、昼から職場に行きますので、そこで試してみます。
(怠惰の清盛) 2018/02/08(木) 11:12

書式設定でできるのですねぇ。初めて見ました。

私の方はマクロ例なぞ。
まず、標準モジュールに以下を貼りつけてください。

 Public Function OKU(cOrg As String) As String
    Dim cw As String
    Dim iw As Long
    Dim ip As Long
    Dim i As Long

    cw = Replace(cOrg, ",", "")
    iw = InStr(cw, ".")
    If iw = 0 Then
        iw = Len(cw)
    Else
        iw = iw - 1
    End If

    For i = iw - 4 To 1 Step -4
        cw = Left(cw, i) & Array("万", "億", "兆")(ip) & Mid(cw, i + 1)
        ip = ip + 1
    Next i
    OKU = cw
 End Function

次に、B1セルには「=OKU(A1)」のように数式を指定してみてください。
(???) 2018/02/08(木) 11:16


???様
ありがとうございます。
マクロは私の能力を超えていますので難しそうですが、丁寧に書いて頂いているので頑張れば何とかなるかも知れません。一度トライしてみたいと思います。
(怠惰の清盛) 2018/02/08(木) 11:26

選択しているセルの表示形式をマクロで強引に変えてしまう例です。参考まで。
※この方法だと、1億円ちょうどなどの場合、非常に不格好になってしまいますが・・・

Sub 表示形式変換マクロ()

    Dim MyRNG As Range

    For Each MyRNG In Selection
        Select Case MyRNG.Value
            Case Is < 10000
                MyRNG.NumberFormatLocal = "G/標準"
            Case Is < 100000000
                MyRNG.NumberFormatLocal = "#""万""#"",""###"
            Case Else
                MyRNG.NumberFormatLocal = "#""億""#"",""###""万""#"",""###"
        End Select
    Next MyRNG
End Sub
(もこな2) 2018/02/08(木) 17:52

もこな2様
一度トライしてみます。ありがとうございました。
(怠惰の清盛) 2018/02/08(木) 23:54

コメント返信:

[ 一覧(最新更新順) ]


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