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を探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「試作品」と「量試品」の区別は
-
「Limited Run」の意味は?
-
反対語
-
EMS,OEM,ODMの違いについて
-
BtoBCの事例は?
-
投機と延期
-
どうして「備中ぐわ」と言うの...
-
製品アイテム数の数え方
-
先日発表になったフェアレディZ...
-
駄菓子「お好みあられ」が購入...
-
各都道府県別で一番生産してい...
-
ケッシーラバーブラシを さがし...
-
エクセルで生産性を求め方
-
『生産性』の使い方
-
uPD71055(8255)のの代用を考...
-
各生態系における生産量
-
WRVが200万円台前半で安いとい...
-
現在世界第3位(2位?)の日本製...
-
JabraEliteActive75tから Elite...
-
髪の毛での人特定(DNA鑑定? ...
おすすめ情報