• ベストアンサー

エクセルで、、、

エクセルで特定の文字列を含む行だけを 削除したいのですが、やりかたがわかりません。 エクセル 特定 文字 削除 で調べているのですが、 お願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • at121
  • ベストアンサー率41% (85/206)
回答No.3

質問数:249回 / 回答数:12回 ならわかるだろうに・・ 「エクセル 特定 文字 削除 で調べている」  のですが・・(みつからないなら・・「検索しろ」)と調べ方・検索のしかたとして キーワードにマクロ、VBAを加えて  「エクセル 特定 文字 削除 マクロ VBA で検索しろ」と教えてくれていると推察することができる・・。 Sub 指定の文字列を含む行だけを削除() 指定の文字列 = InputBox("どの文字列を含む行を削除するんだ?") Do While Not ActiveSheet.UsedRange.Find(指定の文字列) Is Nothing ActiveSheet.UsedRange.Find(指定の文字列).EntireRow.Delete Shift:=xlUp Loop End Sub

Judau_MSZ-010
質問者

お礼

ありがとうございます。

その他の回答 (3)

  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.4

、、、投稿しようかと思ったら、#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

Judau_MSZ-010
質問者

お礼

ありがとうございます。

回答No.2

1.\データ\フィルタ\オートフィルタ を選択します。 2.リスト上部に表示された三角ボタンをクリックし、オプションを選択します。 3.抽出条件で、”特定の文字”を書き込み、右のリストボックスで”を含まない”を選択します。 4.フィルタがかけられて、、”特定の文字”を含まない行だけが表示されますので、表示されたセル範囲(シート全体とか行全体ではない)を選択しコピーします。 5.別のシートに貼り付けてやれば、、、”特定の文字”を含まない行だけのデータベースの出来上がりです。 一番手っ取り早いのでは?

  • RZ350R
  • ベストアンサー率28% (439/1551)
回答No.1

エクセル 特定 文字 削除 キーワードにマクロ、VBAを加えてください。 マクロの記録でも動作するはずです。(実行時間についてはご自分でチューニングしてください)

Judau_MSZ-010
質問者

お礼

ありがとうございます。

Judau_MSZ-010
質問者

補足

ありがとうございます。 言っている意味がよくわかりません、、、 お願いします。

関連するQ&A