▽1
●
ken3memo ●100ポイント ベストアンサー |
Sub ctrl_E() ' Macro1 Macro ' Keyboard Shortcut: Ctrl+e '念のため、先にsheets1のA列をクリアする Sheets("Sheet1").Select Columns("A:A").ClearContents Range("A1").Select 'クリップボードのデータをテキスト形式で貼り付け ActiveSheet.PasteSpecial Format:="テキスト", Link:=False, DisplayAsIcon:= _ Sheets("Sheet1").Select 'A列の最後の行を求める '隣質問の回答 http://q.hatena.ne.jp/1463826490#a1256732 を参考にして last_row = Cells(Rows.Count, 1).End(xlUp).Row '後ろの行から消していく For y = last_row To 1 Step -1 'yに最終行を代入して、step-1で減らしながら処理する Delete_Flg = 0 'フラグをゼロでクリア chkDATA = Trim("" & Cells(y, "A").Value) 'y行目のA列の値を取得 '削除したいデータか判断する If Len(chkDATA) = 0 Then Delete_Flg = 1 '長さが0なら削除 If Right(chkDATA, 6) = "adgt33" Then Delete_Flg = 1 '後ろ(右端)がadgt33で終わっていれば If Left(chkDATA, 6) = "posted" Then Delete_Flg = 1 '先頭(左端)がpostedなら If Left(chkDATA, 6) = "source" Then Delete_Flg = 1 '先頭(左端)がsourceなら '上記↑判断でフラグが立っているか判断 If Delete_Flg = 1 Then Cells(y, "A").Delete Shift:=xlUp '削除、上方向に詰める End If '↑上方向に詰めたかったので、後ろ、最終行から上にさかのぼってチェックして '削除該当データなら消してみた Next '削除されていると、最終行が変わっているので、 '改めて、最終行を求める '隣質問の回答 http://q.hatena.ne.jp/1463826490#a1256732 を参考にして last_row = Cells(Rows.Count, 1).End(xlUp).Row 'A1先頭からA最終行までを選択コピー Range("A1:A" & last_row).Copy End Sub
他の質問
http://q.hatena.ne.jp/1463826490#a1256732
を参考にすると、最終行が取得できるので、
後ろからforで回して、
下から上にチェックしていくイメージで、
不必要なデータをleftやrightで判断して
(instrで探してもよかったかもしれませんが)
削除してみました。
もっと簡潔に書けそうな気もしますが、
叩き台の回答として、使ってみてください。
※他の回答者から袋叩きにされないか気にしつつ・・・
教えて頂いた内容を含めてブログにまとめました。
http://ourenzu.com/20160527/1911.html