![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?a65a0e2)
Excel2002で繰り返し計算を行いたいのですが・・・
以下のシートがあります。
A列 B列 C列 D列 I列
製品1 製品2 製品3 ・・・
生産量 50 80 10
生産額 1000 2400 500
単価 20 30 50
単価(生産金額/生産量)の計算をVBAで行いたいのですが、
1行ずつ指定するのではなく、繰り返し(For Next?)で
行う方法があると思うですが・・・。
(計算はI列までです)
今は1行ずつ書いています。
Range("B2") = ・・・
Range("C2") = ・・・
・
Range("I2") = ・・・
効率が悪いのでこれを改善できないかと・・・。
よろしくお願いします。
No.3
- 回答日時:
エクセルの使用・操作経験はない門外漢ですので参考程度にされて下さい。
そして、既に、回答は出尽くしていますので別の角度から・・・。
___________製品1__製品2__製品3
生産量______50_______80________9
生産額___1000____2400_____420
単価_________20________30______46
こういう形式であれば、生産量行ないし生産額行が更新された時に単価行を書き換えるのもありかと・・・。
Const 生産量行 = 2
Const 生産額行 = 3
Const 単価行 = 4
Private Sub Worksheet_Change(ByVal Target As Range)
Dim intRow As Integer
Dim intCol As Integer
Dim 生産量 As Currency
Dim 生産額 As Currency
intRow = Target.Row
intCol = Target.Column
If (intRow = 生産額行 Or intRow = 生産量行) And intCol > 1 Then
生産量 = Me.Cells(生産量行, intCol)
生産額 = Me.Cells(生産額行, intCol)
If 生産量 <> 0 And 生産額 <> 0 Then
Me.Cells(単価行, intCol) = Rounds(生産額 / 生産量, 1)
End If
End If
End Sub
上述のコードで目的は達せられます。
なお、上述のコードでは単価計算で発生した小数点以下を<切り捨て>ています。
その際に使っている Rounds関数は VBA には存在しません。
そういうことで、 Rounds関数は標準モジュールに登録する必要があります。
'
' Rounds関数用
'
Public Const 四捨五入 = 0
Public Const 切り捨て = 1
Public Const 切り上げ = 2
Public Function Rounds(ByVal M As Currency, _
ByVal A As Integer, _
Optional D As Integer = 0) As Variant
Rounds = Sgn(M) * Fix(Abs(M) * 10 ^ D + Abs((A = 0) * 0.5@ + (A = 2) * (Int(M * 10 ^ D) <> (M * 10 ^ D)))) / 10 ^ D
End Function
<別の角度の意味>
一つは、単価計算ですから、 Currenncy型を使うことも考慮すべき点。
二つは、単価計算ですから、小数点以下の処理も考慮すべき点。
No.2
- 回答日時:
普通は、VBAではなくてセルに計算式を設定して置くと思うのですが?
Sub test1()
Dim col As Integer
For col = 2 To 256
If Cells(2, col) <> "" Then
Cells(4, col) = Cells(3, col) / Cells(2, col)
Else
Exit For
End If
Next
End Sub
回答ありがとうございます。
最初はご指摘の通り計算式を置いていたのですが、
他にもマクロを使っているので、その一連の流れで質問の計算も
行うと思ったものですから・・。
お教えいただきありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) VBAで組み合わせ算出やCOUNTIFSの処理を高速化したいです。 4 2022/04/07 02:38
- Visual Basic(VBA) excel vbaでvlooupの変数がわかりません。 7 2022/05/30 09:35
- Excel(エクセル) Excelマクロ 同列内で複数の数式を繰り返す方法 5 2022/05/22 13:58
- Visual Basic(VBA) ファイル全てを .xlsm に変更したところ、プログラムが途中で落ちてしまっています 17 2022/12/07 12:03
- Visual Basic(VBA) VBAコードで質問があります 2 2022/10/20 15:27
- Visual Basic(VBA) 別シートのデータを参照して値を入れたい。 まとめデータシートのC列D列の値を商品一覧シートのコードが 7 2022/08/17 13:20
- Visual Basic(VBA) 指定列最終行までのスペースを改行するVBAについて 2 2022/06/01 19:50
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Visual Basic(VBA) 追記する列を増やしたい 2つのデータを検索・照合して元データにないデータを下記マクロで商品名を追記し 9 2022/10/05 10:50
- Visual Basic(VBA) vba 等間隔の列に対しての計算 6 2022/05/17 20:15
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・一番好きなみそ汁の具材は?
- ・泣きながら食べたご飯の思い出
- ・「これはヤバかったな」という遅刻エピソード
- ・初めて自分の家と他人の家が違う、と意識した時
- ・いちばん失敗した人決定戦
- ・思い出すきっかけは 音楽?におい?景色?
- ・あなたなりのストレス発散方法を教えてください!
- ・もし10億円当たったら何に使いますか?
- ・何回やってもうまくいかないことは?
- ・今年はじめたいことは?
- ・あなたの人生で一番ピンチに陥った瞬間は?
- ・初めて見た映画を教えてください!
- ・今の日本に期待することはなんですか?
- ・集中するためにやっていること
- ・テレビやラジオに出たことがある人、いますか?
- ・【お題】斜め上を行くスキー場にありがちなこと
- ・人生でいちばんスベッた瞬間
- ・コーピングについて教えてください
- ・あなたの「プチ贅沢」はなんですか?
- ・コンビニでおにぎりを買うときのスタメンはどの具?
- ・おすすめの美術館・博物館、教えてください!
- ・【お題】大変な警告
- ・洋服何着持ってますか?
- ・みんなの【マイ・ベスト積読2024】を教えてください。
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・最強の防寒、あったか術を教えてください!
- ・歳とったな〜〜と思ったことは?
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
おすすめ情報