
No.3ベストアンサー
- 回答日時:
>②と①は逆でもいいし、とにかく融合させたいんです。
伝わりますでしょうか…作る側でなく使う側になりたいと言う事かな?
>①のみで組んだところ動作確認が出来ました
なので全回答をしなかったけれど・・
(意地悪ではけして無く、色々試して解決してほしいだけなのですけれど)
何処で躓いているか教えてくれるといいんだけれど・・
>複数の列に対して、これ以外を消す、これ以外を残すといった指示が可能なのでしょうか。ここかな?
行を削除するのだから出来ますよ(同じ行の他のセル消せるから)
あ、If文かな?
回答している条件式の列ナンバーを変更すれば・・出来ませんか?
こんなやり取りしても無駄になるかも知れませんので
今回はサンプルを試してみてください。処理できるもので理解する方が良いかも・・?
処理結果が同じになるサンプル3つですが希望としては・・理解できるものを使ってくださいね
①を処理した後に②の処理を行う
Sub Example1()
Dim i As Long
With ActiveSheet
Application.ScreenUpdating = False
For i = .Cells(.Rows.Count, 5).End(xlUp).Row To 2 Step -1
If InStr(.Cells(i, 5), "【残したい文字列】") = 0 Then
.Rows(i).Delete
End If
Next
For i = .Cells(.Rows.Count, 3).End(xlUp).Row To 2 Step -1
If InStr(.Cells(i, 3), "【消したい文字列】") > 0 Then
.Rows(i).Delete
End If
Next
Application.ScreenUpdating = True
End With
End Sub
①と②の条件で分岐 (Or)
Sub Example2()
Dim lastRow As Long
Dim i As Long
With ActiveSheet
lastRow = WorksheetFunction.Max(.Cells(.Rows.Count, 3).End(xlUp).Row, .Cells(.Rows.Count, 5).End(xlUp).Row)
Application.ScreenUpdating = False
For i = lastRow To 2 Step -1
If InStr(.Cells(i, 5), "【残したい文字列】") = 0 Or InStr(.Cells(i, 3), "【消したい文字列】") > 0 Then
.Rows(i).Delete
End If
Next
End With
Application.ScreenUpdating = True
End Sub
纏めてメイン処理をする
Sub Example3()
Dim i As Long
Dim rng As Range
With ActiveSheet
For i = 2 To WorksheetFunction.Max(.Cells(.Rows.Count, 3).End(xlUp).Row, .Cells(.Rows.Count, 5).End(xlUp).Row)
If InStr(.Cells(i, 5), "【残したい文字列】") = 0 Or InStr(.Cells(i, 3), "【消したい文字列】") > 0 Then
If rng Is Nothing Then
Set rng = .Cells(i, 1).EntireRow
Else
Set rng = Union(rng, .Cells(i, 1).EntireRow)
End If
End If
Next
End With
Application.ScreenUpdating = False
'メイン
If Not rng Is Nothing Then rng.Delete
Application.ScreenUpdating = True
End Sub
No.4
- 回答日時:
こんにちは
横から失礼します。
>②と①は逆でもいいし、とにかく融合させたいんです。
①のマクロ と ②のマクロ が既にできていて、まとめて実行したいということでしょうか?
であるなら、同じモジュールに新たに
Sub まとめて実行()
Call ①のマクロ
Call ②のマクロ
End Sub
というものを作成しておいて、このマクロを実行すれば、記述した順に処理されます。
(上記の例では、①→②の順に実行されます)
※ 意味が違っていたらスルーしてください。
説明が下手で尚且つ知識不足にも関わらず、大変細かく記載頂きありがとうございました!
そもそも支持のつなげ方?というか、ひとつのモジュールの中に複数の指示を入れ込む方法がわからなかったのですが、無事3つ目のサンプルで理想の形になりました!
本日中に作成する必要がありましたので、大変助かりました!!
本当にありがとうございましたm(*_ _)m
No.2
- 回答日時:
条件を整理してみましょう
①【残したい文字列】が有ったら残す
②【消したい文字列】が有ったら消す
③【残したい文字列】を含むセルに【消したい文字列】が有ったら・・
どうする?
ご質問では①を行って次に②を行う としていますね
つまり、③は 消すになります
対象セルがA列でループ範囲の例
If InStr(Cells(i, 1), "【残したい文字列】") = 0 Or InStr(Cells(i, 1), "【消したい文字列】") > 0 Then
.Rows(i).Delete
行削除の例ですが
参考サイトのように1行ずつ消す場合は下の行から行います
または、unionメソッドでrangeオブジェクトをまとめ 1度に削除する方法があります。
(こちらの方が処理速度が速く、よく使います)
ご質問部分ではないので、自身で調べてみましょう
No.1
- 回答日時:
こんばんは
続けて②の動作と言うより、作成した条件に②の条件を加えれば良いのでは
そうすれば、削除は1度で済むと思います
①のコードを貼ると現在の内容が分かり易いかもですね
迅速なご回答ありがとうございます!
使用のものを貼り付けると文字数オーバーでした…。
疑問なんですが、複数の列に対して、これ以外を消す、これ以外を残すといった指示が可能なのでしょうか。
無知で大変申し訳ございません。
ちなみに参考にさせていただいたのは下記サイトです。https://kirinote.com/excelvba-without-rowdel/
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
電子書籍プレゼントキャンペーン!
最大2万円超分当たる!マンガや小説が読める電子書籍サービス『Renta!』で利用できるギフトコードプレゼント実施中!
-
配列の勉強をしています。使用する変数の意味、検索条件の書き方が難しいです。
Visual Basic(VBA)
-
ExcelのVBAでシフト表を作っていますが、バグが出て困っています
Visual Basic(VBA)
-
動かなくなってしまった古いVBAを動くようにしたい
Visual Basic(VBA)
-
4
初めてマクロを入力しますが、テキストとおりに入力したのに構文エラーです。修正を教えてください。
Visual Basic(VBA)
-
5
マクロのコードを、少しでも削って短くしたい
Excel(エクセル)
-
6
マクロを簡潔にしたい
Excel(エクセル)
-
7
vba メモリ節約
Visual Basic(VBA)
-
8
VBAでfunctionを利用しようとしたときに「引数は省略できません」というエラーが出ます
Visual Basic(VBA)
-
9
VBAで重複データを確認したい
Visual Basic(VBA)
-
10
Excel VBA で End Subのところで「型が一致しません」のエラーとなります。
Visual Basic(VBA)
-
11
【VBA】印刷マクロのループ処理が反映されません
Visual Basic(VBA)
-
12
【前回の続き続きです、ご教示ください】VBAの記述方法がわかりません。
Visual Basic(VBA)
-
13
VBAでエクセルをtxtに変換するとエクセルでカンマを含む文字数字がtxtでは「"」付にならないよ
Visual Basic(VBA)
-
14
指定文字を太字にするVBAを別シートのセルを指定する構文(改良について)
Visual Basic(VBA)
-
15
Excel vbaについて知恵もしくは、コード教えて下さいm(__)m ① 表にあるデータをコピー、
Visual Basic(VBA)
-
16
以前シートを集めて1シートへ繋げる下記コードをご教授いただき作成しました。 今回すでに集めてある「ま
Visual Basic(VBA)
-
17
シート削除のマクロで「deleteメソッドは失敗しました」となります。助けてください! Sub 不要
Visual Basic(VBA)
-
18
vbaを早くしたい
Visual Basic(VBA)
-
19
複数セルに〇印をつけるマクロ
Visual Basic(VBA)
-
20
VBA This Workbookモジュールを別ファイルにコピーする方法
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
人気Q&Aランキング
-
4
エクセルで文字列の最大値を抽...
-
5
文字列からタブコードを取り除...
-
6
VBの「As String * 128」とは?
-
7
エクセル 数値データを桁をそ...
-
8
MS SQLServer のSQLで文字列の...
-
9
EXCELで=より左の文字を一括で...
-
10
VBA2005 16進を2桁で表示したい。
-
11
エクセルで文字列をtxtファイル...
-
12
VBscriptからバッチに変数を渡...
-
13
Excelで3E8を3.00E+8にしない方...
-
14
ORCLEでの小数の表示方法の変更...
-
15
同一セル内に関数と文字列を同...
-
16
Excelで指数表現しないようにす...
-
17
16進数を10進数に簡単に変換す...
-
18
CStringの文字列検索&抜き出し...
-
19
アクセスで特定の数字以外(複...
-
20
アクセスでのインポート時の改...
おすすめ情報
公式facebook
公式twitter