No.4
- 回答日時:
こんにちは
横から失礼します。
>②と①は逆でもいいし、とにかく融合させたいんです。
①のマクロ と ②のマクロ が既にできていて、まとめて実行したいということでしょうか?
であるなら、同じモジュールに新たに
Sub まとめて実行()
Call ①のマクロ
Call ②のマクロ
End Sub
というものを作成しておいて、このマクロを実行すれば、記述した順に処理されます。
(上記の例では、①→②の順に実行されます)
※ 意味が違っていたらスルーしてください。
説明が下手で尚且つ知識不足にも関わらず、大変細かく記載頂きありがとうございました!
そもそも支持のつなげ方?というか、ひとつのモジュールの中に複数の指示を入れ込む方法がわからなかったのですが、無事3つ目のサンプルで理想の形になりました!
本日中に作成する必要がありましたので、大変助かりました!!
本当にありがとうございましたm(*_ _)m
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.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で質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 列を自動で追加したい 3 2022/07/11 12:58
- Excel(エクセル) 【困っています】VBA 追加処理の記述を教えてください。 1 2022/08/25 22:54
- Excel(エクセル) excelにおける転記マクロの書き方 2 2023/05/12 03:16
- その他(データベース) Accessのクエリで1フィールドの抽出条件設定をNullでなく全角半角含む空白のみの文字列でない文 1 2023/04/24 15:20
- Excel(エクセル) Excelの列から検索して該当する行を別シートに転記するVBA 2 2022/12/20 09:35
- Excel(エクセル) ExcelVBAでリストの項目に必要数と同じ手配数を分配していくマクロを作りたいです。 1 2022/07/29 18:36
- Excel(エクセル) 【エクセル」 特定のセルで条件抽出した列を、別シートに上から詰めて表示したい。 8 2022/04/08 16:00
- Visual Basic(VBA) 複数csvを横に追加していくマクロについて 2 2023/04/25 09:19
- Visual Basic(VBA) 【困っています2】VBA 追加処理の記述を教えてください。 2 2022/08/26 11:42
- Visual Basic(VBA) 3つの条件を指定してVBAで行を削除したい 条件1:分類1が重複 条件2:分類2が重複 条件3:個数 6 2022/06/24 11:07
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルでアルファベットか数...
-
EXCELで=より左の文字を一括で...
-
VBAでの Replace関数で、ワイル...
-
Excelで指数表現しないようにす...
-
文字列からタブコードを取り除...
-
エクセル 数値データを桁をそ...
-
エクセルで文字列をtxtファイル...
-
同一セル内に関数と文字列を同...
-
Excelで3E8を3.00E+8にしない方...
-
VBの「As String * 128」とは?
-
Msgboxの×が押されたとき
-
エクセルで文字列の最大値を抽...
-
textboxユーザーコントロールの...
-
GASに文字列として関数を入れる...
-
SQL の Update文(?) と ...
-
MS SQLServer のSQLで文字列の...
-
C言語の勉強しています。すみま...
-
【Excel VBA】複数ある特定の文...
-
【excel】複数のセルを対象に特...
-
sedなどで、特定の文字列の後の...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルでアルファベットか数...
-
EXCELで=より左の文字を一括で...
-
文字列からタブコードを取り除...
-
Excelで3E8を3.00E+8にしない方...
-
VBAでの Replace関数で、ワイル...
-
Excelで指数表現しないようにす...
-
MS SQLServer のSQLで文字列の...
-
エクセルで文字列の最大値を抽...
-
エクセル 数値データを桁をそ...
-
sedなどで、特定の文字列の後の...
-
エクセルで文字列をtxtファイル...
-
VBA2005 16進を2桁で表示したい。
-
同一セル内に関数と文字列を同...
-
Left関数とRight関数を合わせた...
-
“丸(〇/○/◯)”に似た文字…
-
VBの「As String * 128」とは?
-
【Excel VBA】複数ある特定の文...
-
【excel】複数のセルを対象に特...
-
ORCLEでの小数の表示方法の変更...
-
aaa.bbb.ccc という、「ドット...
おすすめ情報