アプリ版:「スタンプのみでお礼する」機能のリリースについて

宜しくお願いします。前提としてD列とP列なのですが、p列に書いてあるものは、絶対にD列に書かれてます。
そこで、P列を主体に考え
D列 P列
1カローラ カローラ
2スカイライン スカイライン
3ギャラン ギャラン
4レガシィ
となっていた場合P列にレガシィはないので、マクロで、レガシィの事が書かれている行A 4~K4まで削除したいのです。このような比較した結果削除するマクロを教えてください。宜しくお願いします。

A 回答 (4件)

「比較した結果削除する」ですが、クリアすれば良いのでしょうか?それとも削除して上に詰めるのでしょうか?

    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。削除して上に詰めるです。

お礼日時:2017/11/01 12:40

D列やP列にはタイトル行は無いのでしょうか?

    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。タイトルは車名です。

お礼日時:2017/11/01 12:40

こんなものはいかがでしょうか?


-----------------------------------------------------------------------------------------
Sub Sample()
Dim 元行 As Long
Dim 先行 As Long
Dim 対象有 As Boolean
Application.ScreenUpdating = False
For 先行 = Cells(Rows.Count, 4).End(xlUp).Row To 2 Step -1
For 元行 = 2 To Cells(Rows.Count, 16).End(xlUp).Row
If Cells(元行, 16).Value = Cells(先行, 4).Value Then
対象有 = True
Exit For
End If
Next
If 対象有 Then
対象有 = False
Else
Range(Cells(先行, 1), Cells(先行, 11)).Delete Shift:=xlUp
End If
Next
Application.ScreenUpdating = True
End Sub
-----------------------------------------------------------------------------------------
    • good
    • 0
この回答へのお礼

出来ました。ありがとうございました。

お礼日時:2017/11/04 19:15

こんにちは!



>A 4~K4まで削除したいのです・・・

削除とは、上にシフトしてしまいますが、それでも良いのでしょうか?
一例です。

Sub Sample1()
Dim i As Long, c As Range, myRng As Range
For i = 2 To Cells(Rows.Count, "D").End(xlUp).Row
Set c = Range("P:P").Find(what:=Cells(i, "D"), LookIn:=xlValues, lookat:=xlWhole)
If c Is Nothing Then
If myRng Is Nothing Then
Set myRng = Cells(i, "A").Resize(, 11)
Else
Set myRng = Union(myRng, Cells(i, "A").Resize(, 11))
End If
End If
Next i
If Not myRng Is Nothing Then
myRng.Select '//★//
Else
MsgBox "該当なし"
End If
End Sub

※ とりあえず「選択」でやめています。

データ消去だけの場合は「★」の行を
>myRng.ClearContents

削除して上にシフトでよいのであれば
>myRng.Delete shift:=xlUp

に変更してください。m(_ _)m
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!