![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
![](http://oshiete.xgoo.jp/images/v2/common/profile/M/noimageicon_setting_14.png?e8efa67)
No.3ベストアンサー
- 回答日時:
以下のマクロを標準モジュールに登録し、実行してください。
削除対象の行があると、メッセージボックスに表示し、削除します。
------------------------------------------------
Option Explicit
Dim Sh1, sh2 As Worksheet
Dim MaxRow As Long ' Sheet2の最終行
Public Sub Macro()
Dim row1 As Long 'sheet1の行番号
Dim row2 As Long 'sheet2の行番号
Dim row As Long '行番号(sheet2一時作業用)
Dim delf As Boolean
Set Sh1 = Worksheets("sheet1") '
Set sh2 = Worksheets("sheet2") ' 削除リスト
MaxRow = sh2.Cells(Rows.Count, 1).End(xlUp).row ' 最終行を求める
'sheet1を5行->1行に順に検索
For row1 = 5 To 1 Step -1
delf = True '削除する
If CheckDuplicate(Sh1.Cells(row1, 1)) = False Then
If CheckDuplicate(Sh1.Cells(row1, 2)) = False Then
If CheckDuplicate(Sh1.Cells(row1, 4)) = False Then
delf = False '削除しない
End If
End If
End If
If delf = True Then
MsgBox (row1 & "行を削除します")
Sh1.Rows(row1).Delete
End If
Next
End Sub
'重複チェック
Public Function CheckDuplicate(ByVal str As String)
CheckDuplicate = False '重複なし
Dim row As Long
For row = 1 To MaxRow
'str中(sheet1のA,B,D列の何れかの値)にsheet2のA列の文字が含まれるなら
If InStr(str, sh2.Cells(row, 1).Value) <> 0 Then
CheckDuplicate = True '重複あり
Exit Function
End If
Next
End Function
------------------------------------------------
![](http://oshiete.xgoo.jp/images/v2/common/profile/M/noimageicon_setting_14.png?e8efa67)
No.2
- 回答日時:
補足要求です。
>Sheet2のA列にリスト化した文字列"a""b""c""d""e"という文字列を含む行を探し出し、
>その行だけを削除する
質問1:Sheet2のA列にリスト化した文字列"a""b""c""d""e" とは、
A1="a"
A2="b"
A3="c"
A4="d"
A5="e"
のように格納されているということですか?
質問2:Sheet2のA列にリスト化した文字列"a""b""c""d""e"という文字列を含む行を探し出し とは
sheet1 の A1の内容が"e"のとき(完全一致)は、削除対象ですが、
A1の内容が"XXXeYYY"のように、"e"を含んでいる場合(部分一致)でも、削除対象でしょうか?
質問3:1行、削除すると、下の行が繰り上がってきますが、それで良いですか?
ご回答ありがとうございます。
質問1、その通りです。
質問2、部分一致でも削除対象です。
質問3、繰り上げたいです。
よろしくお願いします。
No.1
- 回答日時:
Sheet1のA1~E5の5x5のデータがあり、Sheet2のA列にリスト化した削除用文字列があるとして回答します。
ここでは、Sheet1のF~K列を作業列とします。(実際には空白列でよいです)
1. F1セルに、『=AND(ISERROR(FIND(OFFSET(Sheet2!$A$1,COLUMN()-COLUMN($F$1),0,1,1),$A9)),ISERROR(FIND(OFFSET(Sheet2!$A$1,COLUMN()-COLUMN($F$1),0,1,1),$B9)),ISERROR(FIND(OFFSET(Sheet2!$A$1,COLUMN()-COLUMN($F$1),0,1,1),$D9)))』と入力します。
2. F1セルをコピーして、F1~J5セルに貼りつけます。
3. K1セルに『=IF(AND(F9:K9),"OK","DELETE")』と入力します。
4. K1セルをコピーして、K1~K5セルに貼りつけます。
5. フィルタを掛けて、K列にDELETEと表示された行のみ表示させます。
6. 選択して行削除すればよいです。
※カギカッコ『』は入力する必要ありません。
作業列の位置を変える場合は、式のセル位置を修正する必要があるかもしれません。
Sheet2のリストが増えた場合は、増えたリストの数に応じて、作業列の2列目をコピーして『コピーした列の挿入』をすればよいです。
ありがとうございます。
おっしゃられたとおり入力してみましたが、1に関してはすべてTRUEが、3に関してはエラーが返されます。
1のA9,B9,D9、3のF9:K9というのがよくわからないのですが、A1,B1,D1、F1:K1ですかね?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルの条件付き書式で*を使いたい 4 2022/05/13 16:49
- Visual Basic(VBA) 【至急】 当方初心者です。 マクロについて知恵をお貸しください。 ★したい動作 ①リストE列2行目か 4 2022/09/29 18:56
- Excel(エクセル) Excelのリストにある文字を含むセルを、複数の色で色付けしたいです 2 2022/08/11 17:39
- Excel(エクセル) Excelでの検索結果を含む行だけを表示させたい 5 2023/03/10 17:08
- Excel(エクセル) 【Excel】指定した文字列に該当する行を重複しないようにリスト 3 2022/03/30 12:27
- Excel(エクセル) Excelにて、行の最後のセルの値をコピーして別sheetに張りつけるVBAコードをご教授願います 3 2022/11/20 14:35
- Excel(エクセル) エクセルでA列セル内で折り返すことなく、文字列を、B列C列・・・側に一行に 2 2022/07/23 02:02
- Visual Basic(VBA) 列を指定して値を左から5文字にそろえる 1 2022/06/10 20:28
- Excel(エクセル) PowerQueryに詳しい方教えてください(Office365) 1 2022/07/24 21:11
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
このQ&Aを見た人はこんなQ&Aも見ています
-
性格の違いは生まれた順番で決まる?長男長女・中間子・末っ子・一人っ子の性格の傾向
同じ環境で生まれ育っても、生まれ順で性格は違うものなのだろうか。家庭教育研究家の田宮由美さんに教えてもらった。
-
特定の文字がある行以外を削除するマクロ
その他(Microsoft Office)
-
ExcelのVBAのマクロで他のシートの複数項目をクリアする方法
Visual Basic(VBA)
-
指定した文字があった場合、その行を削除するマクロが欲しいです
Excel(エクセル)
-
-
4
【VBA】特定の値が入った行をコピーして別シートに貼り付ける方法をおしえていただきたいです。
Excel(エクセル)
-
5
エクセル 指定した文字列を含む列を削除するには
Excel(エクセル)
-
6
EXCEL VBA セルに既に入力されている文字に文字を追加する
Excel(エクセル)
-
7
【Excel VBA】複数ある特定の文字列を含む行を削除
Excel(エクセル)
-
8
エクセルVBAで、ある文字を含んでいたら別シートに抽出したい
Excel(エクセル)
-
9
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
10
EXCEL VBAで、セルの文字列の前後に文字を入力する方法は?
その他(Microsoft Office)
-
11
UserForm1.Showでエラーになります。
工学
-
12
VBAで重複データを合算したい
Excel(エクセル)
-
13
【VBA】特定の文字が入っている行の一部を抽出して別シートコピーするには
Visual Basic(VBA)
-
14
vba フィルター 複数条件 3つ以上 完全一致除外
Visual Basic(VBA)
-
15
【vba】指定範囲の中に任意の文字があるときの条件分岐
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
IFとIFS関数
-
Excelを無料で使うには? パソ...
-
セルの数を求めたい
-
Excelの表示についての質問
-
再質問です。マクロの修正箇所...
-
データチェックを行うエクセル...
-
エクセルで「ページレイアウト...
-
エクセルの数式バーのフォント...
-
エクセルの関数について教えて...
-
エクセルでセルに標準で入力さ...
-
Microsoft1Officeの互換ソフト...
-
シフト表をエクセルで作るとき...
-
ユーザー定義関数をアドイン登...
-
Excel VBAで全ての矢印を赤色に...
-
VBA Private Sub Worksheet_Cha...
-
2列に入っているデータを1列...
-
Excelに詳しい方! B列が「日...
-
excel2013 MonthDays 関数が使...
-
エクセルのクイックアクセスツ...
-
Excelの数式について教えてくだ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
半角カタカナをヘボン式ローマ...
-
(マクロ)vlookupの元データを同...
-
エクセルで上位バイトのセルと...
-
exselの質問です
-
Excel 大小比較演算子による「...
-
Excel VBについての質問です。
-
エクセルの問題です。絶対値の...
-
非表示列の再表示に失敗
-
職場の人から聞かれており、こ...
-
Excel関数-文字列で自動作成さ...
-
Excelデータをコピペして、ペー...
-
ユーザー定義関数をアドイン登...
-
【マクロ】for next構文について
-
エクセルの日付を編集する
-
【マクロ】VLOOKUPにて参照元に...
-
exselで最小数で並び替える関数
-
libre 表計算ソフトの計算がう...
-
エクセルで表
-
エクセルの表で1年間の曜日を...
-
西暦和暦
おすすめ情報