|
▼yata さん:
yataさん こんにちわ。返信有難うございます。
2項目の件についてですが、結果的には数量の合計を基準にして並べ替えがしたいのです。
例:
A氏 850(これは合計値です。例:100+500+250) 9/1
9/23
10/1
↓
C氏 1000 9/2
9/31
A氏 850 9/1
9/23
10/1
といった感じにしたいのです。やはり難しいのでしょうか?
>素人じゅうすけ さん こんばんわ
>最初に
>>一つ問題があります。マクロを記入したのですが、「R=UsedRange.Rows.Count」のところで実行不能になります。「R=Rows.Count」と書き換えましたが、そのときに「Case DateValue(md1)」の部位にて実行不能になります。
>>何がどのようにいけないのでしょうか?
>R=Range("A1").CurrentRegion.Rows.Count
>または
>R=Range("A65536").End(xlUp).Row
>にしてください
>>Case DateValue(md1)」の部位にて実行不能になります。
>InputBoxには 9/1 又は 9月1日 の日付形式で入力して下さい。
>元のA列は日付形式で入力されていると思いますが。それで日付形式で入力された文字列をシリアル値にする必要があるためです。
>------------------------------------
>次に
>>例えば、A氏が三件だとしますと、C列にその日付(縦に、つまりは1行目からスタートの場合は、
>
>1行目から3行目まで)早いもの順にすべて表示させたいのです。
>>その下、一行開けて次の人を表示させたいのです。次の人は5行目からのスタートと言うわけです。
>
>そうすると並べ替えというのは何を基準にするのですか?
>先に提示したコードでは
>
>名前指定 A氏 A氏が3件あったら合計して2行目に表示
>人名 数量 日付
>A 600
>次にC氏を指定 2件で 合計850なら A氏より大きいからC氏が上になる。
>人名 数量 日付
>C 850
>A 600
>と並べ替えていますが、
>
>ご説明の通りだと並び替えは必要なくて
>人名 数量 日付
>A 250 8/12
>A 50 8/20
>A 300 9/1
>1行空ける
>C 400 8/15
>C 450 8/30
>ということですか?
>そうでしたら下記コードで
>
>Sub Test2()
> Dim R As Long, R2 As Long '元データの行数と表示先の最終の行番号
> Dim 人名 As String
> '表示先Sheet4に項目が入っていなかったら実行しない
> If Sheets("Sheet4").Range("A1") = "" Then Exit Sub
>
> R = Range("A65536").End(xlUp).Row
> 人名 = InputBox("抽出する人")
>
> '元データから拾い出してSheet4に表示
> For Each Rng In Range(Range("C2"), Cells(R, 3))
> If Rng.Value = 人名 Then
> With Sheets("Sheet4")
> .Activate
> R2 = .Range("A65536").End(xlUp).Offset(1, 0).Row
>
> .Cells(R2, 1) = 人名
> .Cells(R2, 2) = Rng.Offset(0, 4) '数量
> .Cells(R2, 3) = Rng.Offset(0, -2) '日付
> End With
> End If
> Next
>
> '人名が2つ以上あったら間に行を挿入する
> Sheets("Sheet4").Activate
> With ActiveSheet
> If Range("A3") = "" Then Exit Sub
> For i = 3 To .Range("A65536").End(xlUp).Row
> If .Cells(i, 1) <> "" And .Cells(i - 1, 1) <> "" Then
> If .Cells(i, 1) <> .Cells(i - 1, 1) Then
> .Cells(i, 1).EntireRow.Insert
> End If
> End If
> Next i
> End With
>End Sub
>
>行挿入部分でエラー対策
> 1.A3が空白 詰まりデータが1件しか表示されていないので、行挿入は不要
> 2.iが3 詰まりA2とA3が空白でない時で人名が異なっている場合は 行を挿入
> 3 以下同様
>と処理されます
>-------------------------------------------------------
>最初に並べ替えということでしたが、これからどこを基準にして並べ替えをしたらいいですか?
>もしかして C氏の合計が大きいから
>人名 数量 日付
>C 400 8/15
>C 450 8/30
>1行空ける
>A 250 8/12
>A 50 8/20
>A 300 9/1
>ということですか?
>これはかなり難しいと思います。人名毎にデータ件数がバラバラだから。
>新たに質問を立てて、詳しい方にお願いされるほうが良いかと思います。
|
|