[[20090108213745]] 『行の削除』(削除) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『行の削除』(削除)
 お世話になります。
 シートの列の範囲は異なります。
 ”合計”と入力されている文字と”ビル名”と入力されている文字を
 検索しながら削除をしたいのですが下記に例を書かせていただきます。

 A29に【合計】 A32【ビル名】 A29、A30、A31、A32
                                      ↑削除  ↑削除  ↑削除  ↑削除

 A58に【合計】 A62【ビル名】 A58、A59、A60、A61
                                      ↑削除  ↑削除  ↑削除  ↑削除
 データーが多いのでマクロを?


 【ビル名】と入っている行は削除ですか?
 それとも、残すのですか?

 また、他にはどのようなパターンがあるのですか?
 たとえば、
  【合計】のセルがつづけて二回出てきたり
 なんて事があったりするのでしょうか。
 それとも、そのようなことはなく
  【合計】のセルがあったら次には必ず【ビル名】のセルがある
 のでしょうか。

 言葉だけで説明していただいても良いですが
 その他の部分のデータのサンプルもあると
 理解しやすくて良いと思います。

 削除範囲と次の削除範囲までの間にはどのようなデータがあるのか。
 【合計】と【ビル名】の間のセルにはどのようなデータがあるのか。
 他の列にはどのようなデータがあるのか。

 (HANA)

 説明が悪くて申し訳ございません。
 	  A	       B	       C	       D
1	行タイトル	行タイトル	行タイトル	行タイトル
2	行タイトル	行タイトル	行タイトル	行タイトル
3	行タイトル	行タイトル	行タイトル	行タイトル
4	ビル名	         歌舞伎町		
5	行タイトル	行タイトル	行タイトル	行タイトル
6	行タイトル	行タイトル	行タイトル	行タイトル
7	行タイトル	行タイトル	行タイトル	行タイトル
8	行タイトル	行タイトル	行タイトル	行タイトル
9	2009/1/1	     2009/1/20	  1件	      2件
10	2009/1/2	     2009/1/20	    1件	            2件
11	2009/1/3	     2009/1/20	    1件	            2件
12	2009/1/4   	 2009/1/20	    1件	            2件
13	2009/1/5	          2009/1/20	    1件	            2件
14	合計	            *****	               5	             10
15	行タイトル	行タイトル	行タイトル	行タイトル
16	行タイトル	行タイトル	行タイトル	行タイトル
17	行タイトル	行タイトル	行タイトル	行タイトル
18	ビル名	         江東区		
19	行タイトル	行タイトル	行タイトル	行タイトル
20	行タイトル	行タイトル	行タイトル	行タイトル
21	行タイトル	行タイトル	行タイトル	行タイトル
22	行タイトル	行タイトル	行タイトル	行タイトル
23	2009/1/1	          2009/1/20	    1件	            2件
24	2009/1/2	          2009/1/20	    1件	            2件
25	2009/1/3	          2009/1/20	    1件	            2件
26	2009/1/4	          2009/1/20	    1件	            2件
27	2009/1/5	          2009/1/20	    1件	            2件
28	合計	            *****                5	             10
29	行タイトル	行タイトル	行タイトル	行タイトル
30	行タイトル	行タイトル	行タイトル	行タイトル
31	行タイトル	行タイトル	行タイトル	行タイトル
32	ビル名	         港区		
33	行タイトル	行タイトル	行タイトル	行タイトル
34	行タイトル	行タイトル	行タイトル	行タイトル
35	行タイトル	行タイトル	行タイトル	行タイトル
36	行タイトル	行タイトル	行タイトル	行タイトル
37	2009/1/1        	2009/1/20	              1件              2件
38	2009/1/2	         2009/1/20              1件              2件
39	2009/1/3	         2009/1/20	              1件	             2件
40	2009/1/4	         2009/1/20               1件	             2件
41	2009/1/5	         2009/1/20	            1件        2件
42	合計	            *****	               5                10

 上記の表を下記のようにしたいのですが

	 A	  B	        C	     D
1	ビル名	歌舞伎町		
2	2009/1/1	2009/1/20  	1件	    2件
3	2009/1/2	2009/1/20	         1件	    2件
4	2009/1/3	2009/1/20	         1件	    2件
5	2009/1/4	2009/1/20	         1件	    2件
6	2009/1/5	2009/1/20       	1件	    2件
7	ビル名	江東区		
8	2009/1/1	2009/1/20	         1件	    2件
9	2009/1/2	2009/1/20	         1件	    2件
10	2009/1/3	2009/1/20	         1件	    2件
11	2009/1/4	2009/1/20 	1件	    2件
12	2009/1/5	2009/1/20        	1件	    2件
13	ビル名	港区		
14	2009/1/1	2009/1/20  	1件	    2件
15	2009/1/2	2009/1/20	         1件	    2件
16	2009/1/3	2009/1/20	         1件	    2件
17	2009/1/4	2009/1/20  	1件	    2件
18	2009/1/5	2009/1/20	         1件	    2件
 タイトル行はまちまちで(上記は揃えましたが)
 このような感じですが説明下手で申し訳ございません。


 大変分かりやすいです。有り難う御座います。

 「行タイトル」が必ず文字列なら
 作業列を作成し(以下A列を挿入し作業列とした場合のセル番地)
 A1セルに
=IF(OR(B1="ビル名",ISNUMBER(B1)),"","削除")
 の式を入れた後、最終行までフィルドラッグ。
  最初の列には最終行までデータが隙間無く有るでしょうから
  A1セルを選択してセル枠上・右下の黒い■をダブルクリック
  でも良いと思います。

 オートフィルタを設定し「削除」と入っている行を表示させ
 A1セルを選択し、Ctrl + Shift + ↓(或いは表示されている範囲を選択)
 右クリック して 行の削除(D)
 作業列(A列)を削除。

 (HANA)

 ありがとうございます。
 マクロはむりでしょうか?

 マクロの記録の手順でも書きましょうか?
 >の式を入れた後、最終行までフィルドラッグ。
 の部分も状況によっては繰り返し使える記録にできますが。

 まずは上記手順でうまくいくかどうかが問題ですね。

 (HANA)

 これだけ手間かけて、しかも丁寧にサンプルデータを並べて頂いたら一肌脱ぎたく
 なります。
 HANAはんの方法は別にこんな塩梅でも削除でけます。
 ただ削除基本、及び削除やや早いもデータ数によっては時間がかかります。
 もっとも早い方法は必要なデータを変数に格納したうえデータを削除。そこへ一気に
 吐き出せば比較にならない程速く処理でけます。
           (弥太郎)
 あぁ、それと、これはビル名と日付のデータのみ拾い出せっちゅう事でっしゃろ?
 '---------------------------
 Sub 削除基本()
    Dim i As Long
    Application.ScreenUpdating = False
    With Sheets("sheet1")
        For i = .Range("a" & Rows.Count).End(xlUp).Row To 1 Step -1
            If .Cells(i, 1) <> "ビル名" And Not IsDate(.Cells(i, 1)) Then
                Rows(i).EntireRow.Delete
            End If
        Next i
    End With
    Application.ScreenUpdating = True
 End Sub

 Sub 削除やや早い()
    Dim i As Long,j As Long, tbl, x()
    Application.ScreenUpdating = False
    With Sheets("sheet1")
        tbl = .Range("a1").Resize(.Range("a" & Rows.Count).End(xlUp).Row)
        For i = UBound(tbl, 1) To 1 Step -1
            If tbl(i, 1) <> "ビル名" And Not IsDate(tbl(i, 1)) Then
                ReDim Preserve x(j)
                x(j) = .Cells(i, 1).Address
                j = j + 1
                If j = 30 Then
                    .Range(Join(x, ",")).EntireRow.Delete
                    j = 0
                End If
            End If
        Next i
        If j > 0 Then .Range(Join(x, ",")).EntireRow.Delete
    End With
    Application.ScreenUpdating = True
 End Sub
   

 バックアップしてから試してください。

 Sub test()
 Dim WholeAreas As Areas, i As Long
 Range("c1", Range("c1").End(xlDown).EntireRow.Delete
 Set WholeAreas = Columns("c").SpecialCells(2).Areas
 If WholeAreas Is Nothing Then Exit Sub
 For i = WholeAreas.Count To 1 Step -1
     With WholeAreas(i)
         .Cells(1).Resize(4).EntireRow.Delete
         If i <> WholeAreas.Count Then
             .Cells(.Cells.Count).Offset(-2).Resize(3).EntireRow.Delete
          End If
     End With
 Next
 End Sub
 (seiya)

 ありがとうございました。でもエラーと削除が?
  (seiya)さんの方ですが
 Range("c1", Range("c1").End(xlDown).EntireRow.Delete
 上記が構文エラーになってしまいます。
 (弥太郎)さんの方はビル名のみ表示されて日付のデータ部分も全部
 削除されてしまいます。

 んな馬鹿な・・・。
 その日付のデータは実際日付として認識でけるデータが入ってまっか?
 新しいブックに適当なデータを入力して試してみまひょう。
 イヤと言うほど見事に抽出されますワ。
       (弥太郎) 


 )が一つ抜けていました。

 Range("c1", Range("c1").End(xlDown)).EntireRow.Delete
                                   ↑
 (seiya)

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.