- ベストアンサー
エクセルで、、、
エクセルで特定の文字列を含む行だけを 削除したいのですが、やりかたがわかりません。 エクセル 特定 文字 削除 で調べているのですが、 お願いします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
質問数:249回 / 回答数:12回 ならわかるだろうに・・ 「エクセル 特定 文字 削除 で調べている」 のですが・・(みつからないなら・・「検索しろ」)と調べ方・検索のしかたとして キーワードにマクロ、VBAを加えて 「エクセル 特定 文字 削除 マクロ VBA で検索しろ」と教えてくれていると推察することができる・・。 Sub 指定の文字列を含む行だけを削除() 指定の文字列 = InputBox("どの文字列を含む行を削除するんだ?") Do While Not ActiveSheet.UsedRange.Find(指定の文字列) Is Nothing ActiveSheet.UsedRange.Find(指定の文字列).EntireRow.Delete Shift:=xlUp Loop End Sub
その他の回答 (3)
- KenKen_SP
- ベストアンサー率62% (785/1258)
、、、投稿しようかと思ったら、#3 at121 さんのコードをみてビックリボーゼンです。短く、効率的で、、、下記のような最近オーバースペック気味のコードをシコシコ書いてばかりでしたから、衝撃的でした(^^;)。悔い改めます。 一応、もったいないので、アップします。 急ぎで作りましたので、コード内にコメントはほとんどありません。 検索したいセルを選択した状態で実行してみて下さい。 マクロの貼り付け方とかは、、、申し訳ないですが、ご自分でお調べください。 余談ですが、、 自作関数:GetCellRange は検索語を含むセルオブジェクトを返します。 完全一致・部分一致の使い分けも、第3引数で設定できます。 応用すれば、検索語を含むセルにさまざまな処理をほどこすコードが書けます。 'SAMPLE MACRO Sub キーワードを含む列全体を削除() Dim strKeyWrd As String Dim TargetCell As Range Dim Res As Integer strKeyWrd = InputBox( _ "検索語を含む列全体を削除します。", "検索語を入力して下さい") If strKeyWrd <> "" Then Set TargetCell = GetCellRange(strKeyWrd, Selection, False) If TargetCell Is Nothing Then MsgBox "検索語は見つかりませんでした", vbInformation, "終了" GoTo ExitHandler Else TargetCell.EntireRow.Select Res = MsgBox( _ "現在選択された行を削除します。よろしいですか?", _ vbExclamation + vbOKCancel + vbDefaultButton2, "削除確認") If Res = vbOK Then Selection.Delete Shift:=xlUp End If End If End If ExitHandler: Set TargetCell = Nothing End Sub '指定セル範囲からキーワードを探し、そのセルオブジェクトを返す Function GetCellRange( _ strSearchKey As String, _ rngSearchArea As Range, _ Optional SearchType As Boolean) As Variant 'Range Dim rngBuf As Range Dim CurrentCell As Range Dim flag As Boolean flag = False On Error Resume Next For Each CurrentCell In rngSearchArea Select Case SearchType Case Is = True '完全一致 If StrComp(CurrentCell.Value, strSearchKey) = 0 Then flag = True End If Case Is = False '部分一致 If InStr(1, CurrentCell.Value, strSearchKey) > 0 Then flag = True End If End Select If flag And Not IsEmpty(CurrentCell) Then If rngBuf Is Nothing Then Set rngBuf = CurrentCell Else Set rngBuf = Union(rngBuf, CurrentCell) End If flag = False End If Next CurrentCell Set GetCellRange = rngBuf End Function
お礼
ありがとうございます。
- katayama19
- ベストアンサー率58% (10/17)
1.\データ\フィルタ\オートフィルタ を選択します。 2.リスト上部に表示された三角ボタンをクリックし、オプションを選択します。 3.抽出条件で、”特定の文字”を書き込み、右のリストボックスで”を含まない”を選択します。 4.フィルタがかけられて、、”特定の文字”を含まない行だけが表示されますので、表示されたセル範囲(シート全体とか行全体ではない)を選択しコピーします。 5.別のシートに貼り付けてやれば、、、”特定の文字”を含まない行だけのデータベースの出来上がりです。 一番手っ取り早いのでは?
- RZ350R
- ベストアンサー率28% (439/1551)
エクセル 特定 文字 削除 キーワードにマクロ、VBAを加えてください。 マクロの記録でも動作するはずです。(実行時間についてはご自分でチューニングしてください)
お礼
ありがとうございます。
補足
ありがとうございます。 言っている意味がよくわかりません、、、 お願いします。
お礼
ありがとうございます。