|
素人じゅうすけ さん こんばんわ
>再度の質問です。
>このマクロでやってみたのですが、E列の数量の合計が出ないのです。’G列から取り出して・・・とありますが、E列の場合は式はどのようになるのでしょうか?
Offset(0,4)の意味は分かりますか。
あなたは最初C列に人名が入っていると言われました。でG列はC列から見て4行右にあります。Rng はC列のセルです。
>> 'G列から取り出して合計する
>> Sum = Sum + Rng.Offset(0, 4).Value
>>
また、A列の日付をすべて出すことについて、SHEET2のC列(始めには)日付がでて、その横からはSHEET1のB列の貨物番号が出てきます。
>そして、いくつか打ち込んでみたのですが、SHEET2において、数量の大きいものから上から順に並びません。
下記コードは標準モジュールにではなく、元データが入っているシートのコード欄に入れていますか?
標準モジュールなら、上から5行目
>R = UsedRange.Rows.Countを
R = ActiveSheet.UsedRange.Rows.Count にして、そのシートを開いて実行しないといけません。
>> With Sheets("Sheet4")
ここはあなたのBookの表示したい場所に変更しましたか?
>(基準になる人名はSHEET1のD列にあります)
>>2項目の日付表示について
>>C列に縦方向に表示ではなく、同じ行の右方向に表示でしたら割と簡単です。
>>
>>最初に提示した行挿入が無いコードに追加してください
>>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 '人名D列から見て数量E列はどの位置にありますか?
>>
>> End If
>>Next
>>
With Sheets("Sheet4") '表示させるシート名は?
>> r2 = .Range("A65536").End(xlUp).Offset(1, 0).Row
>> .Cells(r2, 1) = 人名
>> .Cells(r2, 2) = Sum
For Each Rng In Range(Range("C2"), Cells(R, 3)) 'ここももとでーたの人名が入っている場所
>> If Rng.Value = 人名 Then
日付 = Rng.Offset(0, -2) '人名セルから見て日付セルは何列左ですか?
>> .Cells(r2, 1).End(xlToRight).Offset(0, 1) = 日付
>> End If
>> Next
>> End With
>>
>>'降順に並べ替え
>>With Sheets("Sheet4") '転記されていて並べ替えられるべきデータが入っているシート名を
>> .Activate
>> 'データが1件以上あったら並び替えをする
If .Range("A3") <> "" Then 'A3が空白ということはデータが1件だから並べ替えが必要ないですね。
>> .Range("A1").Select
>> Selection.Sort Key1:=.Range("B2"), Order1:=xlDescending
>> End If
>>End With
>>End Sub
----------------------------------------------------------
A D E
日付 人名 数量
8月29日 A 100
8月30日 C 1
9月1日 D 1000
9月3日 A 200
9月5日 B 50
9月29日 F 30
9月30日 B 20
10月1日 C 2
10月2日 A 300
うまく修正できたら InputBoxで人名A,B,Dの順番で実行
A B C D E
人名 数量 日付
D 1000 2006/9/1
A 600 2006/8/29 2006/9/3 2006/10/2
B 70 2006/9/5 2006/9/30
|
|