Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


37508 / 76732 ←次へ | 前へ→

【44389】Re:訂正と2項目の行挿入
回答  yata  - 06/11/14(火) 19:51 -

引用なし
パスワード
   素人じゅうすけ さん こんばんわ
最初に
>一つ問題があります。マクロを記入したのですが、「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
ということですか?
これはかなり難しいと思います。人名毎にデータ件数がバラバラだから。
新たに質問を立てて、詳しい方にお願いされるほうが良いかと思います。
1 hits

【44202】別のSHEETへの答え記入 素人じゅうすけ 06/11/8(水) 20:58 質問
【44206】Re:別のSHEETへの答え記入 りん 06/11/9(木) 12:02 発言
【44208】Re:別のSHEETへの答え記入 素人じゅうすけ 06/11/9(木) 18:01 お礼
【44215】Re:勘違いかもしれませんが yata 06/11/9(木) 22:13 回答
【44251】Re:勘違いかもしれませんが 素人じゅうすけ 06/11/10(金) 19:11 質問
【44255】Re:勘違いかもしれませんが yata 06/11/10(金) 22:44 回答
【44266】Re:勘違いかもしれませんが 素人じゅうすけ 06/11/11(土) 14:11 質問
【44289】Re:取り敢えず1項目だけ yata 06/11/12(日) 8:42 回答
【44291】Re:取り敢えず1項目だけ 素人じゅうすけ 06/11/12(日) 9:36 回答
【44293】Re:取り敢えず1項目だけ 素人じゅうすけ 06/11/12(日) 10:30 質問
【44301】Re:1項目の説明と2項目 yata 06/11/12(日) 19:10 回答
【44313】Re:1項目の説明と2項目 素人じゅうすけ 06/11/13(月) 9:30 回答
【44383】Re:1項目の説明と2項目 素人じゅうすけ 06/11/14(火) 17:21 質問
【44389】Re:訂正と2項目の行挿入 yata 06/11/14(火) 19:51 回答
【44404】Re:訂正と2項目の行挿入 素人じゅうすけ 06/11/15(水) 9:37 質問
【44420】Re:2項目の日付表示では yata 06/11/15(水) 21:34 回答
【44486】Re:2項目の日付表示では 素人じゅうすけ 06/11/18(土) 14:53 お礼
【44542】Re:2項目の日付表示では 素人じゅうすけ 06/11/21(火) 9:43 質問
【44568】Re:2項目の日付表示では yata 06/11/21(火) 22:46 回答
【44590】Re:2項目の日付表示では 素人じゅうすけ 06/11/22(水) 17:40 お礼

37508 / 76732 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free