|
素人じゅうすけ さん こんばんわ
ごめんなさい。返信が遅くなりました。
>再度の質問、申し訳ありません。
>計算式のマクロは、「’引き算をして別シートへ表示」の部位(つまりは、NEXTとWITH SHEETSの間)に打ち込めば好いのでしょうか?
「計算式のマクロ」とはどのような式を入れたいのですか?。
計算はここで出来ていますが
With Sheets("Sheet2")
'使われている最終行番号
EndRow = .Range("A65536").End(xlUp).Row
.Cells(EndRow + 1, 1) = 期間
.Cells(EndRow + 1, 2) = Cells(r2, 2) - Cells(r1, 2)
.Cells(EndRow + 1, 3) = Cells(r2, 3) - Cells(r1, 3)
End With
元データがSheet1にあって、Sub Test1()〜End SubまでがSheet1のコードにあれば、
Sheet2の1行目に項目が入力してあれば、InputBoxで日付を 8/31,9/30[OK]、9/30,10/31[OK]、・・
とするたびに、2行目、3行目・・・と追加されて表示されるはずですが?
もう一つの方は1列目に項目が入力されていたら、1回目はB列に 2回目はB列がデータで埋まっているので、その右の列に・・・ということです。
Cells(r2, 2) - Cells(r1, 2) は重量を引き算しています。
Cells(r2, 3) - Cells(r1, 3) は金額を引き算しています
EndRow + 1 は使っている行の下の行番号
EndColumn + 1 は使っている右側の列番号 です。
●2項目
Sheet4に項目を入れておく。A1に人名 B1に数量
Sub Test2()
Dim R As Long, r2 As Long '元データの行数と転記先の行番号
Dim 人名 As String
Dim Sum As Double
R = UsedRange.Rows.Count
人名 = InputBox("抽出する人")
For Each Rng In Range(Range("C2"), Cells(R, 3))
If Rng.Value = 人名 Then
'G列から取り出して合計する
Sum = Sum + Rng.Offset(0, 4).Value
End If
Next
With Sheets(4)
r2 = .Range("A65536").End(xlUp).Offset(1, 0).Row
.Cells(r2, 1) = 人名
.Cells(r2, 2) = Sum
End With
'降順に並べ替え
With Sheets("Sheet4")
.Activate
'データが1件以上あったら並び替えをする
If .Range("A3") <> "" Then
.Range("A1").Select
Selection.Sort Key1:=.Range("B2"), Order1:=xlDescending
End If
End With
End Sub
C列に表示する日付について
例えばA氏のデータが3件あった場合は?
|
|