現在エクセル2000を使っています。
そこにデータがあるのですが
A列・B列・C列・D列・E列・F列
までをつかって作ってあります。
文字を検索してその文字がヒットする
行ごとを消去する場合はどのようにすれば
よろしいでしょうか?
どの列でも、その文字が入っている場合は
行ごと消したいのですが。
そして、その行は空白になるのではなく
詰めたいのです。
例えば
111111111
222222222
333333333
となっているデータで2を消すとして
111111111
333333333
となるのではなく
111111111
333333333
とゆうように詰めて作りたいのです。
すみませんが、よろしくお願いします。
No.7ベストアンサー
- 回答日時:
部分一致に直しました。
セルI1の内容が含んでいる行が削除されます。
これで如何でしょうか?
Sub DelRows()
Dim Rw As Long
Dim ColMax As Integer
Const FindData = "H1" '<------ 検索するデータを指定するセル
Const DataTop = 2 ' <------ データのトップ行指定
Dim col As Integer
If IsEmpty(range(FindData)) Then Exit Sub
ColMax = range("A1").CurrentRegion.Columns.Count
For Rw = range("A1").CurrentRegion.Rows.Count To DataTop Step -1
For col = 1 To ColMax
If InStr(Cells(Rw, col).Value, range(FindData).Value) > 0 Then
Rows(Rw).Delete
Exit For
End If
Next col
Next Rw
End Sub
す、すばらしいです。(涙)
できました。ありがとうございます。
最近、手作業での作業にものすごく限界を
感じていて放置になりぎみだった
作業が一気にできました。
無知はおそろしいです。
ここ何年かの自分がアフォに見えました(笑)
最近いろいろとここで、お世話になっており
大変助かっております。
いままで、こんなことできないかー
と思っているものが次々と解決させていただいております。
また、質問のコーナーに登場させていただきます。
何かありましたらよろしくお願いします。
No.6
- 回答日時:
> 【I1】には、検索して引っかかったら消す
> ための検索文字をいれればよろしいですよね。
その通りです。
> ●が含まれる列を行ごと消去するわけです。
> どこがまちがえてしまったのでしょうか。
間違っては、おりません。
> 4行目のところは、【I1】と指定を変えさせて・・・
これですと、セルI1 に入力した内容と同じデータが入っているセルが、見つかると
その行を削除します。
例えば、セルI1に "東京" と入力して実行した場合は、データ範囲内の"東京"と入って
いるセルがあれば、その行を削除します。
"東京都" は、削除しません。部分一致では、ありません。
もしかして、部分一致ですか?
あっ、ごめん!! 今読み直したら、部分一致でした。 ちょっと待ってね。
↓ 無視して
あと確認ですが、データ範囲内に全てが空欄の行、または、全ての行が空欄の列が
ありますか。
つまり、データが空白で分断されていませんか? ということです。
そういうデータ構造でなく、連続していれば、うまく行く筈です。
データがあるシートをアクティブにした状態で DelRows()を実行します。
ダメなときは、どのようになるのか、書いてもらえますか?
かなりのデータ量らしいのですが、メモリに関するエラーですと、VBAで一挙に
対処することは、難しいと思います。 この辺は、Excelの宿命でぇ~す。
No.5
- 回答日時:
削除するデータを何処で指定するかが書いておりませんので、取り敢えず
操作性を考慮し、セルH1で指定するようにしました。
これは、4行目で変更できます。データ範囲の右端から2列離して指定してください。
5行目でデータの先頭行を指定します。
一応、VBA設定の手順を書いておきます。
1.Alt + F11 で VBE(Visual Basic Editor)を開きます。
2.VBE のメニューから[挿入] -->[標準モジュール] を指定します。
3.モジュールウィンドウに下記コードをコピーして貼り付けます。
4.Alt + Q (または、右上隅の×)でウィンドウを閉じ、シートに戻ります。
5.実行するときは、メニューから[ツール]-->[マクロ]-->[マクロ]で
「DelRows」を指定し、[実行]ボタンを押します。
Sub DelRows()
Dim Rw As Long
Dim ColMax As Integer
Const FindData = "H1" '<------ 検索するデータを指定するセル
Const DataTop = 2 ' <------ データのトップ行指定
Dim col As Integer
If IsEmpty(range(FindData)) Then Exit Sub
ColMax = range("A1").CurrentRegion.Columns.Count
For Rw = range("A1").CurrentRegion.Rows.Count To DataTop Step -1
For col = 1 To ColMax
If Cells(Rw, col).Value = range(FindData).Value Then
Rows(Rw).Delete
Exit For
End If
Next col
Next Rw
End Sub
この回答への補足
お答えありがとうございます。
さっそくためさせていただいたのですが
申し訳ございません、うまくできませんでした。
現在いじっているデータは
F列まで、仕様していますので
4行目のところは、【I1】と指定を変えさせて
いただきまして、データのトップ行は
【2】行目からスタートとさせていただきました。
【I1】には、検索して引っかかったら消す
ための検索文字をいれればよろしいですよね。
このようにしました
A B C D E F G H I
1 ●
2 あ あ あ あ あ あ
3 い い い い い い
4 う う う う う う
5 え え え え え え
で、●が含まれる列を行ごと消去するわけです。
どこがまちがえてしまったのでしょうか。
すみません、無知でご迷惑をおかけします。
No.4
- 回答日時:
レコードが5万件もあるのであれば、DAOかADOを使用してSQLで処理し、加工後の
結果を表示した方が速いです。
No.3
- 回答日時:
Sub 検索()
Dim 検索 As String, 行番号 As String
検索 = InputBox("検索条件")
Cells(1, 1).Select
If 検索 = "" Then
MsgBox "検索条件を入力してください。", 48, "検索条件"
Exit Sub
End If
On Error GoTo Fail
Cells.Find(What:=検索, After:=ActiveCell, LookIn:=xlValues, LookAt:= _
xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _
).Activate
行番号 = Selection.Row
Rows(行番号).Select
Selection.Delete Shift:=xlUp
Cells(1, 1).Select
Exit Sub
Fail: MsgBox "NOTHING", 48, "検索"
End Sub
----------------------------------------------------------------------
これはA列のみで検索します。また、1命令1実行です。
こんな感じでどうですか?自信ないです。すいません
お答えありがとうございました。
解決することができました。
また、質問をすることが
あると思います。
その時はよろしくお願いします。
No.2
- 回答日時:
セオリーじゃないかもしれませんが、私なら、
A列~F列を全部結合したセルをG列に作成
(G1:=A1&B1&C1&D1&E1&F1 みたいな感じ)
[データ]-[フィルタ]-[オートフィルタ]
G列のフィルタで一覧から[オプション]を選択
○○ を含む を選択
選択された行を選ぶ
右クリック⇒[行の削除]を選択
こんな感じで消しちゃいます。
この回答への補足
お答えありがとうございます。
セルを結合させてしまうと
データ的にこまりますので
申し訳ございませんでした。
今後この手で使える時が
あるとおもいます。
その時にありがたく使わせていただきます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- その他(データベース) Accessのクエリで1フィールドの抽出条件設定をNullでなく全角半角含む空白のみの文字列でない文 1 2023/04/24 15:20
- Excel(エクセル) capeofdragonと申します Excel2016を使っておりまして 半角又は全角の任意文字列が 2 2022/10/31 13:51
- Excel(エクセル) Excelの列から検索して該当する行を別シートに転記するVBA 2 2022/12/20 09:35
- Visual Basic(VBA) VBA 改行コードの取り方 1 2022/03/22 14:14
- Visual Basic(VBA) エクセルVBAについて 2 2023/01/31 16:21
- Visual Basic(VBA) VBA初心者です 検索した数字の行に色をつける 5 2023/02/13 14:22
- Excel(エクセル) Excelでの検索結果を含む行だけを表示させたい 5 2023/03/10 17:08
- Excel(エクセル) エクセルでA列セル内で折り返すことなく、文字列を、B列C列・・・側に一行に 2 2022/07/23 02:02
- Visual Basic(VBA) 【至急】 当方初心者です。 マクロについて知恵をお貸しください。 ★したい動作 ①リストE列2行目か 4 2022/09/29 18:56
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excelで隣のセルと同じ内容に列...
-
Excel関数:「0」を除いた標準...
-
Excel関数で、範囲内の最後のセ...
-
ピボットテーブル 0個の行を...
-
値の入っているセルのうち、一...
-
エクセル 8ケタの数字から日数...
-
【エクセル】区切り位置で分割...
-
Excelで複数列かつ複数行分の一...
-
SUMIFで数値が入力されているセ...
-
correl関数の範囲指定
-
A and B or Cの合計の出し方
-
エクセル、正数のみの集計[(負...
-
【VBA】データを項目別にシート...
-
エクセルで何種類のデータがあ...
-
離れたエリアでVLookupを使いたい
-
Excelで空白のセルを選択し、コ...
-
エクセルで電話番号を - で分...
-
VLOOKUP関数の範囲を自動変更さ...
-
エクセルで、昇順、降順使いま...
-
Excelのマクロでソートがうまく...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelで隣のセルと同じ内容に列...
-
Excel関数:「0」を除いた標準...
-
【エクセル】区切り位置で分割...
-
Excel関数で、範囲内の最後のセ...
-
エクセルに入力された日付「S40...
-
値の入っているセルのうち、一...
-
ピボットテーブル 0個の行を...
-
SUMIFで数値が入力されているセ...
-
エクセルで何種類のデータがあ...
-
複数の候補列から、検索値と一...
-
【Excel】歯抜けデータの集約
-
更新前と更新後の差分をVBAを使...
-
SUMPRODUCT関数 行が増えても...
-
A and B or Cの合計の出し方
-
SUMIFとCOUNTIFの違いについて
-
エクセル 8ケタの数字から日数...
-
VLOOKUPの検索で該当するものが...
-
Excelのマクロでソートがうまく...
-
ピボットで複数の区切りでグル...
-
Excelで複数列かつ複数行分の一...
おすすめ情報