
稀に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で質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 別シートのデータを参照して値を入れたい。 まとめデータシートのC列D列の値を商品一覧シートのコードが 7 2022/08/17 13:20
- Visual Basic(VBA) エクセルVBAで教えて頂きたいのですが? 2 2022/12/31 20:28
- Visual Basic(VBA) excel vbaでvlooupの変数がわかりません。 7 2022/05/30 09:35
- Excel(エクセル) VBAの指示の内容 昨日こちらでご教示頂いたのですが初心者な為、一つ一つの指示が何をやっているのかわ 2 2022/10/25 18:08
- Visual Basic(VBA) いつもお世話になっております、VBAで教えて頂きたいのですが 2 2022/05/05 22:20
- Visual Basic(VBA) VBAが止まります。 2 2022/09/02 14:02
- Visual Basic(VBA) VBA処理追加 こちらでご教示頂いたのですが回答完了させてしまいましたのでこちらからまた質問させてく 2 2022/10/27 09:57
- Visual Basic(VBA) VBAが止まります。 3 2022/08/31 14:09
- Excel(エクセル) B列に文字がはいったらA列に数字が入るマクロードを完成させたい 4 2023/04/21 01:58
- Visual Basic(VBA) 別シートから年齢別の件数をカウントしたいの続き 5 2023/01/24 00:16
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
B列の最終行までA列をオート...
-
Excelで、あるセルの値に応じて...
-
Cellsのかっこの中はどっちが行...
-
IIF関数の使い方
-
Worksheets メソッドは失敗しま...
-
【VBA】2つのシートの値を比較...
-
Changeイベントでの複数セルの...
-
【VBA】複数行あるカンマ区切り...
-
VBAを使って検索したセルをコピ...
-
VBAで、離れた複数の列に対して...
-
vba 2つの条件が一致したら...
-
VBAコンボボックスで選択した値...
-
DataGridViewにリンク列の追加...
-
VBA 列が空白なら別のマクロへ...
-
DataGridViewに空白がある場合...
-
C# 列の挿入
-
マクロについて。S列の途中から...
-
VBA 何かしら文字が入っていたら
-
VBAで、特定の文字より後を削除...
-
rowsとcolsの意味
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelで、あるセルの値に応じて...
-
Worksheets メソッドは失敗しま...
-
vba 2つの条件が一致したら...
-
B列の最終行までA列をオート...
-
IIF関数の使い方
-
Cellsのかっこの中はどっちが行...
-
【VBA】2つのシートの値を比較...
-
VBAのFind関数で結合セルを検索...
-
URLのリンク切れをマクロを使っ...
-
文字列の結合を空白行まで実行
-
VBA 何かしら文字が入っていたら
-
VBAを使って検索したセルをコピ...
-
【Excel VBA】 B列に特定の文字...
-
VBAで指定範囲内の空白セルを左...
-
Changeイベントでの複数セルの...
-
VBAで、離れた複数の列に対して...
-
VBAでのリスト不一致抽出について
-
データグリッドビューの一番最...
-
rowsとcolsの意味
-
DataGridViewに空白がある場合...
おすすめ情報