- ベストアンサー
マクロ転記後の表示形式
マクロを使って別ブックの数値を転記させ、転記させた数値を 「X億XX00万」表示にしたいのですが、表示形式を何度か変えてみたものの、上手くいきませんでした。 例えば、数値が「122,5564,1047」の場合、転記で「1億2300万」にしたいです。 どなたかご教示をお願い致します。
- みんなの回答 (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)
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)
> ちなみにですが、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億とする場合の計算になっています。
- m5048172715
- ベストアンサー率16% (860/5261)
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)
No4の訂正です。 1億以下 ↓ 1億未満
- kkkkkm
- ベストアンサー率66% (1721/2591)
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
- kkkkkm
- ベストアンサー率66% (1721/2591)
数値(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)
結果は数値ではなく文字列になりますが 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
- m5048172715
- ベストアンサー率16% (860/5261)
使用したマクロなどんなのでしたか?
補足
使用したマクロはこんな感じです。 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 よろしくお願いいたします。
補足
ご回答ありがとうございます。 ちなみにですが、2行目の「OrgV=12255641047#」の値を任意に変更させたい場合は そのたびごとにvbaを打ち換えねばならないのでしょうか? また、集計表のE3セルの数値(金額)をD2セルに転記させて#億##00万表示にさせる場合、OrgVの代わりに別の変数を立てねばならないのでしょうか? 初歩的な質問で申し訳ありませんが、よろしくお願いいたします。