[[20170512180641]] 『【VBA】ある条件に一致した行を削除し、上に詰めax(かんな) ページの最後に飛ぶ

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

 

『【VBA】ある条件に一致した行を削除し、上に詰めて表示させる方法』(かんな)

ご存知の方、教えた頂きたいです。。
以下のように実現するVBAを作成したいです。

■条件
・A列に1300番台(1300〜1399)、2100 番台(2100〜2199)がある行を削除
・残った行を上に詰めて表示

    |  A     B

 1行 |    -      -
 2行 |  ID   パスワード
 3行 |  1200   ああ       
 4行 |  1380     いい 
 5行 |  1200    うう    
 6行 |   1350    ええ      
 7行 |   2100     おお     
 8行 |  2800    かか   

     ↓

4.6.7行目が削除され、上に詰めて表示される

    |  A     B

 1行 |    -       -
 2行 |  ID    パスワード
 3行 |  1200   ああ        
 4行 |  1200    うう           
 7行 |  2800    かか 

お手数をおかけしますが、ご教授願います。  

< 使用 Excel:Excel2016、使用 OS:Windows10 >


もし、その操作を手作業でする場合は、どうしますか?

(マナ) 2017/05/12(金) 18:33


データが少なければフィルターをかけるなどもあるのかなと思いますが、
実際は、1300番台や2100番台以外にも1290単体も削除するなど他にも条件がたくさんあり、行数やエクセルの数もたくさん存在するため、時間がかかりすぎます。

(かんな) 2017/05/12(金) 18:43


>時間がかかりすぎます。

手作業ならどういう方法をご存じなのか知りたかったのです。
それをマクロ化すればよいだけなので、
時間は気にする必要はないです。

詳細設定は使ったことありますか。
条件が多いのであれば、フィルターより便利です。

まずは手作業で使えそうか確認してみてください。
もしかすると手作業でも十分と思うかもしれませんが。

(マナ) 2017/05/12(金) 19:22


シンプルに全行を一周してみて、
削除条件に適う行は変数に入れといて、最後に削除。

で、目的の挙動にならないかな?確認してみてください。
コードはあくまで一例ってことで。。

Sub DeleteLine()

	Dim i As Long, l As Long
	Dim Del As Range

	With ActiveSheet
	l = .Cells(Rows.Count, 1).End(xlUp).Row
	    For i = 3 To l
	        If (.Cells(i, 1) >= 1300 And .Cells(i, 1) < 1400) Or (.Cells(i, 1) >= 2100 And .Cells(i, 1) < 2200) Then
	            If Del Is Nothing Then
	                Set Del = .Rows(i)
	            Else
	                Set Del = Union(Del, .Rows(i))
	            End If
	        End If
	        DoEvents
	    Next i
	End With

	Del.Delete

End Sub
(がる) 2017/05/24(水) 18:28


 詳細設定の条件だけど、難しいような?

    |[A]  |[B]   |[C]                           
 [1]|ID   |ID    |                              
 [2]|>1399|<2100 |1399より大きく、2100未満      
 [3]|<1300|<>1290|または1300より小さく、1290以外
 [4]|>2199|      |または2199より大きい                       
(稲葉) 2017/05/24(水) 19:41

>詳細設定の条件だけど、難しいような?

深く考えていませんでした。確かに、ややこしいですね。
数式がわかりやすいかも。

=(A3>=1300)*(A3<1400)+(A3>=2100)*(A3<2200)+(A3=1290)=0

(マナ) 2017/05/24(水) 20:30


コメント返信:

[ 一覧(最新更新順) ]


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