• ベストアンサー

マクロ転記後の表示形式

マクロを使って別ブックの数値を転記させ、転記させた数値を 「X億XX00万」表示にしたいのですが、表示形式を何度か変えてみたものの、上手くいきませんでした。 例えば、数値が「122,5564,1047」の場合、転記で「1億2300万」にしたいです。 どなたかご教示をお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • kkkkkm
  • ベストアンサー率66% (1721/2591)
回答No.9

No8の訂正です。 集計表のD3は進捗率ということが頭から飛んでました。進捗率はそのままですね。 For~Nextのループと.Offset(0, i)を外してください。 Dim OrgV As Double, i As Long OrgV = wb1.Worksheets("集計表").Range("C3").Value With ThisWorkbook.Worksheets("Sheet1").Range("B2") If Int(OrgV / 10000000000#) > 0 Then .NumberFormatLocal = "#""億""#,###""万""" Else .NumberFormatLocal = "#,###""万""" End If .Value = Round(OrgV / 100000000) * 100 End With

その他の回答 (8)

  • kkkkkm
  • ベストアンサー率66% (1721/2591)
回答No.8

No7の訂正です。 With使ったのに無駄がありました以下の方が見やすいですね。 Dim OrgV As Double, i As Long For i = 0 To 1 OrgV = wb1.Worksheets("集計表").Range("C3").Offset(0, i).Value With ThisWorkbook.Worksheets("Sheet1").Range("B2").Offset(0, i) If Int(OrgV / 10000000000#) > 0 Then .NumberFormatLocal = "#""億""#,###""万""" Else .NumberFormatLocal = "#,###""万""" End If .Value = Round(OrgV / 100000000) * 100 End With Next i

  • kkkkkm
  • ベストアンサー率66% (1721/2591)
回答No.7

> ちなみにですが、2行目の「OrgV=12255641047#」の値を任意に変更させたい場合は > そのたびごとにvbaを打ち換えねばならないのでしょうか? > また、集計表のE3セルの数値(金額)をD2セルに転記させて#億##00万表示にさせる場合、OrgVの代わりに別の変数を立てねばならないのでしょうか? 他の方の補足でのコードを拝見しました。 > ThisWorkbook.Worksheets("Sheet1").Range("B2").Value = _ > wb1.Worksheets("集計表").Range("C3").Value > '進捗率 > ThisWorkbook.Worksheets("Sheet1").Range("C2").Value = _ > wb1.Worksheets("集計表").Range("D3").Value この場合でしたら(上記の部分のみです) Dim OrgV As Double, i As Long For i = 0 To 1 OrgV = wb1.Worksheets("集計表").Range("C3").Offset(0, i).Value With ThisWorkbook.Worksheets("Sheet1") If Int(OrgV / 10000000000#) > 0 Then .Range("B2").Offset(0, i).NumberFormatLocal = "#""億""#,###""万""" Else .Range("B2").Offset(0, i).NumberFormatLocal = "#,###""万""" End If .Range("B2").Offset(0, i).Value = Round(OrgV / 100000000) * 100 End With Next i にすればいけると思います。 Offsetではなく For i=2 to 3 Cells(3,i+1)や.Cells(2,i) などにしてもいいですが分かりにくいかなと思ってOffsetにしてます。 ただし > 数値が「122,5564,1047」の場合、転記で「1億2300万」 のように11桁で1億とする場合の計算になっています。

回答No.6

Function f○億○○万(s, x, y) シート変更 (s) Cells(y, x).Select Selection.NumberFormatLocal = "#""億""##,,""00万"" " End Function Function rcell(s, x, y) rcell = Worksheets(s).Cells(y, x) End Function Function wcell(s, x, y, z) Worksheets(s).Cells(y, x) = z End Function Function シート変更(s) Sheets(s).Select End Function Sub 集計() For 列 = 2 To 13 z = wcell("Sheet1", 2, 列, rcell("集計表", 3, 列)) z = f○億○○万("Sheet1", 2, 列) Next End Sub

  • kkkkkm
  • ベストアンサー率66% (1721/2591)
回答No.5

No4の訂正です。 1億以下 ↓ 1億未満

  • kkkkkm
  • ベストアンサー率66% (1721/2591)
回答No.4

1億以下がある場合は(以下はB1の場合です) 書式設定をVBAで振分て試してみてください。 Dim OrgV As Double OrgV = 12255641047# If Int(OrgV / 10000000000#) > 0 Then Range("B1").NumberFormatLocal = "#""億""#,###""万""" Else Range("B1").NumberFormatLocal = "#,###""万""" End If Range("B1").Value = Round(OrgV / 100000000) * 100

uverca122
質問者

補足

ご回答ありがとうございます。 ちなみにですが、2行目の「OrgV=12255641047#」の値を任意に変更させたい場合は そのたびごとにvbaを打ち換えねばならないのでしょうか? また、集計表のE3セルの数値(金額)をD2セルに転記させて#億##00万表示にさせる場合、OrgVの代わりに別の変数を立てねばならないのでしょうか? 初歩的な質問で申し訳ありませんが、よろしくお願いいたします。

  • kkkkkm
  • ベストアンサー率66% (1721/2591)
回答No.3

数値(12300)として扱いたい場合 Dim OrgV As Double, buf As Double Dim mStr As String OrgV = 12255641047# Range("B1").Value = Round(OrgV / 100000000) * 100 で書式設定でユーザー定義 #"億"#,###"万" で試してみてください。

  • kkkkkm
  • ベストアンサー率66% (1721/2591)
回答No.2

結果は数値ではなく文字列になりますが A1に結果をだします。 Dim OrgV As Double, buf As Double Dim mStr As String OrgV = 12255641047# buf = Round(OrgV / 100000000) * 100 mStr = Int(buf / 10000) & "億" & buf - Int(buf / 10000) * 10000 & "万" Range("A1").Value = mStr

回答No.1

使用したマクロなどんなのでしたか?

uverca122
質問者

補足

使用したマクロはこんな感じです。 Sub 集計() 'ブックを開いて変数にセット Dim wb1 As Workbook Workbooks.Open Filename:="C:\集計表.XLS" Set wb1 = ActiveWorkbook '集計表のデータをマクロファイルに転記 '受注予定合計 ThisWorkbook.Worksheets("Sheet1").Range("B2").Value = _ wb1.Worksheets("集計表").Range("C3").Value '進捗率 ThisWorkbook.Worksheets("Sheet1").Range("C2").Value = _ wb1.Worksheets("集計表").Range("D3").Value 'ブックを閉じる Application.DisplayAlerts = False wb1.Close Application.DisplayAlerts = True 'ここからの形式変換の処理が分かりません End Sub よろしくお願いいたします。

関連するQ&A