下記エクセルシートの黄色のセル範囲にM列以降1行目の日付に応じた計算式の結果を入れたいと考えています(excelは2010です)。
初めVBAを使わずにワークシート関数のIF文の入れ子で表示させていましたが、複雑になりすぎた上、実際の範囲がかなり広くエクセルが重くて開くのさえ難しくなってしまったため、VBAで計算した結果だけを表示させようとしています。
VBAで書いたコードは以下の通りです。
Sub calc() Dim c, rng Set rng = Worksheets(1).Range("M2:AJ4") For Each c In rng Select Case Worksheets(1).Range("M1") Case Is < Worksheets(1).Range("$B2") c.Value = 0 Case Is <= Worksheets(1).Range("$C2") c.Value = Worksheets(1).Range("$G2") * Worksheets(1).Range("$A2") Case Is <= Worksheets(1).Range("$D2") c.Value = Worksheets(1).Range("$H2") * Worksheets(1).Range("$A2") Case Is <= Worksheets(1).Range("$E2") c.Value = Worksheets(1).Range("$I2") * Worksheets(1).Range("$A2") Case Is <= Worksheets(1).Range("$F2") c.Value = Worksheets(1).Range("$J2") * Worksheets(1).Range("$A2") Case Else c.vlaue = 0 End Select Next End Sub
M列以降1行目の応当日が、B列日付未満であれば0を、B列日付以上C列日付未満であればG列とA列を乗じた値をと算出させて、値のみを表示させたいと考えていますが、ワークシート関数のような相対参照がうまくできず、すべて同じ値になってしまいます(この場合すべて130)。
どのようにしたらうまくセルごとに参照箇所を変えるようなコードになるのでしょうか。
よろしくお願いいたします。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/08/29 04:42
2018/08/29 06:37