|
▼yata さん:
yataさん、こんばんわ。
有難うございました。早速これでやってみます。
>素人じゅうすけ さん こんばんわ
>
>>再度の質問です。
>>このマクロでやってみたのですが、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
|
|