
稀に1円合いません?
Sheet1から金額と個数を貼り付ける下記コードで、金額を切り上げるコードを何処に書けば良いかおわかりの方がいらっしゃいましたら教えてください。
Sub 金額転記()
'対象シートを設定
Dim Ws1 As Worksheet, Ws2 As Worksheet
Set Ws1 = Worksheets("Sheet1")
Set Ws2 = Worksheets("Sheet2")
'最終行の取得
Dim Cmax1 As Long, Cmax2 As Long
Cmax1 = Ws1.Range("A65536").End(xlUp).Row
Cmax2 = Ws2.Range("A65536").End(xlUp).Row
'変数設定
Dim Product_code As String, Master_code As String, Product_name As String
Dim i As Long, j As Long, Product_price As Long
'Ws1のD列を取得
For i = 2 To Cmax1
Product_code = Ws1.Range("D" & i).Value
'Ws2のA列を取得
For j = 2 To Cmax2
Master_code = Ws2.Range("A" & j).Value
'Ws1のB列とWs2のA列をマッチング
If Product_code = Master_code Then
'Ws2のC列とD列を取得
Product_name = Ws2.Range("C" & j).Value
Product_price = Ws2.Range("D" & j).Value
Exit For
End If
Next
'Ws1のG列とH列に出力
If Product_name <> "" Then '空白の初期化
Ws1.Range("G" & i).Value = Product_name
Ws1.Range("H" & i).Value = Product_price
Product_name = ""
Product_price = 0
End If
Next
End Sub

No.4ベストアンサー
- 回答日時:
D2セルの値は小数点以下端数を含むけど、
表示形式が通貨で恐らく小数点以下の桁数がゼロになっているので
切り上げ表示になっている。
G2セルは、一旦、整数型(long)変数Product_priceを介しているから
小数点以下が切り捨てられている。
ってことではないですか?
金額を扱うなら整数型(long)ではなく通貨型(Currency)を使用した方が良いですよ。
Dim Product_price As Currency

No.3
- 回答日時:
Ws1.Range("H" & i).Value = WorksheetFunction.RoundUp(Product_pric
e,0)No.2
- 回答日時:
こんにちは
説明文やコードの内容と、添付の図とが一致していないので、とても分かりにくいのですが・・
>Sheet1から金額と個数を貼り付ける下記コードで
ご提示のコードでは、シート2の値をシート1に転記しているように読めます。
また、変数 Product_price がご質問の対象の「金額」のように思われますが、それってH列に転記するコードになっていませんか?
(添付図ではG列のように見えますが・・)
>金額を切り上げるコードを何処に書けば良いか~
そもそも論になってしまいますが、「Master_code = ~」とあるので、もしかするとシート2がマスター的なシートなのでしょうか?
(単なる変数名だけの話だけで、実際の内容は関係ないのかも知れませんが)
であるなら、マスターに端数ありの値を記入するのをやめるようにしておくのが正論のように思いますけれど・・・
(他の計算では、端数を用いて計算をする必要があるのかも知れませんので、なんともわかりませんけれど)
戯言はこのくらいにしておいて・・
処理がご提示の内容だけであるなら、変数 Product_price に値を代入する時でも、その値をセルに代入する時でもどちらでも良いので、「切り上げ」を行えばよいと思われます。
(極端に言えば、その間ならどこでも良いです)
例えば、セルへの代入直前なら
>Ws1.Range("H" & i).Value = Product_price
の直前、あるいは右辺で直接切り上げてしまえば良いでしょう。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAで、特定の文字より後を削除...
-
空白セルをとばして転記
-
VBAで重複データを確認したい
-
IIF関数の使い方
-
VBAで別のブックの値をVlookup...
-
オートフィルタをマクロで作成...
-
DataGridViewに空白がある場合...
-
【VBA】2つのシートの値を比較...
-
VBAを使って検索したセルをコピ...
-
VBA カスタムオーダーのあと...
-
VBA: 2列のリストボックスの2列...
-
vba 2つの条件が一致したら...
-
複数の列の値を結合して別の列...
-
VBAで、離れた複数の列に対して...
-
VBAのFind関数で結合セルを検索...
-
Excelで、あるセルの値に応じて...
-
Worksheets メソッドは失敗しま...
-
C# dataGridViewの値だけクリア
-
期限を超えた日付に警告のメッ...
-
【マクロ】実行時エラー '424':...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelで、あるセルの値に応じて...
-
Worksheets メソッドは失敗しま...
-
Cellsのかっこの中はどっちが行...
-
vba 2つの条件が一致したら...
-
【VBA】2つのシートの値を比較...
-
B列の最終行までA列をオート...
-
IIF関数の使い方
-
URLのリンク切れをマクロを使っ...
-
VBAを使って検索したセルをコピ...
-
DataGridViewに空白がある場合...
-
VBA 何かしら文字が入っていたら
-
VBAのFind関数で結合セルを検索...
-
複数の列の値を結合して別の列...
-
VBAでのリスト不一致抽出について
-
データグリッドビューの一番最...
-
VBAで指定範囲内の空白セルを左...
-
rowsとcolsの意味
-
【Excel VBA】 B列に特定の文字...
-
VBAで、特定の文字より後を削除...
-
エクセル 2つの表の並べ替え
おすすめ情報