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
------------------------------------------------
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も見ています
-
風水の観点で選ぶ観葉植物とは?置き場所や上げたい運気ごとの注意点を紹介!
観葉植物で運気をアップするコツを、風水デザイン1級建築士の福島昌彦さんに伺った。
-
ExcelのVBAのマクロで他のシートの複数項目をクリアする方法
Visual Basic(VBA)
-
特定の文字がある行以外を削除するマクロ
その他(Microsoft Office)
-
【VBA】特定の値が入った行をコピーして別シートに貼り付ける方法をおしえていただきたいです。
Excel(エクセル)
-
-
4
エクセル 指定した文字列を含む列を削除するには
Excel(エクセル)
-
5
指定した文字があった場合、その行を削除するマクロが欲しいです
Excel(エクセル)
-
6
【VBA】特定の文字が入っている行の一部を抽出して別シートコピーするには
Visual Basic(VBA)
-
7
【VBA】条件に一致しない行を削除したい 複数条件
Visual Basic(VBA)
-
8
エクセルVBAで、ある文字を含んでいたら別シートに抽出したい
Excel(エクセル)
-
9
エクセルVBAのIf,Then 構文でOr条件とAnd条件の結合方法?
Excel(エクセル)
-
10
Excel VBA A列が特定の値以外の場合、その行を削除
Excel(エクセル)
-
11
EXCEL VBA セルに既に入力されている文字に文字を追加する
Excel(エクセル)
-
12
VBAのオートフィルターで該当行がない場合に処理を止めたい
Excel(エクセル)
-
13
リストと一致する値のセルを塗りつぶしたい。
その他(Microsoft Office)
-
14
【Excel VBA】複数ある特定の文字列を含む行を削除
Excel(エクセル)
-
15
vba 2つの条件が一致したらコピーして別シートに値のみ貼り付け
Visual Basic(VBA)
-
16
【Excel】複数の列を参照して、特定の文字列を含む行全体を別シートに抽出する関数
Excel(エクセル)
-
17
VBAで重複データを合算したい
Excel(エクセル)
-
18
【vba】指定範囲の中に任意の文字があるときの条件分岐
Excel(エクセル)
-
19
【EXCEL】【VBA】空欄は飛ばして処理する方法を教えて下さい。
Excel(エクセル)
-
20
特定の文字列があったらその行をまるごと別シートに反映させたい
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excelについて教えてください
-
【マクロ】名前を保存する際に...
-
エクセル マクロ チェックボックス
-
Excel 複数列 A列B列C列一致 D...
-
エクセル vbaについて教えてく...
-
エクセルであるセルに数字を入...
-
【Excel】数字を3倍にし、なお...
-
Excel分析ツールでのポアソン回...
-
エクセルVBA、別ブックへ転記す...
-
【マクロ】顧客番号にて一致さ...
-
Excelでセルの値が同じか...
-
(マクロ)データをAブックからB...
-
エクセルを使っていて2024/5/15...
-
エクセル共有したが、アクセス...
-
エクセル②
-
エクセルのデーターが2か月前の...
-
UNIQUE関数が使えないバージョ...
-
INDIRECTを使わず excelで複数...
-
Excelで縦軸の書式を0:00形式の...
-
【マクロ】読取専用のファイル...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel 2019 のピボットテーブル...
-
[関数得意な方]教えて下さい・...
-
Excelにてある膨大なデータを管...
-
[関数について]わかる方教えて...
-
Excel初心者です。 詳しい方、...
-
excelの不要な行の削除ができな...
-
エクセル関数に詳しい方教えて...
-
INDIRECTを使わず excelで複数...
-
[オートフィルタ]で抽出された...
-
エクセルの神よ、ご回答を! エ...
-
エクセル関数に詳しい方、教え...
-
各ページの1番上の表示について
-
Excelで写真のような表を作った...
-
エクセルで不等号記号(≠)が上に...
-
数学 Tan(θ)-1/Cos(θ)について...
-
Excel 2019 は、SPILL機能があ...
-
Excelで全角を半角にしたいので...
-
条件付き書式を教えてください
-
Excel フィルターを掛けた状態...
-
[オートフィルタ]の適用範囲の...
おすすめ情報