『重複していない行を削除』(おかもん) 日付と数値が入力された2列のデータがあり、その横に日付と別の数値が入力された2列のデータが並んでいます。 2つある日付の列は完全に同じものではなく、片方にはあるのにもう片方にはない日付があります。 その「重複していない日付とその横の数値」の行を削除して詰めることで、「日付、数値、左のと同じ日付、数値」のデータに直したいです。 検索すると、重複データの削除はヒットするのですが、重複していないデータを削除する方法はあるでしょうか。 ----- 日付 数値  日付 数値 2/10  3   2/10 4  2/11  5   2/12 8 2/12  6   2/13 5      ↓ 日付 数値  日付 数値 2/10  3   2/10 4  2/12  6   2/12 8 2/13  3   2/13 5 < 使用 Excel:Excel2019、使用 OS:Windows10 > ---- Sub test() Dim i As Long For i = Cells(Rows.Count, 1).End(xlUp).Row To 2 Step -1 If WorksheetFunction.CountIf(Range("C:C"), Cells(i, 1)) = 0 Then Cells(i, 1).Resize(, 2).Delete Shift:=xlUp End If Next End Sub (フォーキー) 2023/02/23(木) 16:50:59 ---- 回答ありがとうございます。 マクロをいじったことがないので理解できません。 上の例と実際のブックとで違う部分もあるので、コードのどこを修正するかの検討がつかないです。 関数やアイコンを使った方法、あるいはコードの解説願えますか。 (おかもん) 2023/02/23(木) 17:04:17 ---- 標準機能ではおそらく無理だと思います。 関数は思いつかなかったので、コードの解説だけ。 >上の例と実際のブックとで違う部分もあるので、 セル番地などが違うと時間の無駄なので、実際のレイアウトを提示したほうが良いです。 以下のレイアウトを使用しました。 |[A] |[B] |[C] |[D] [1]|日付 |数値|日付 |数値 [2]|2月10日| 3|2月10日| 4 [3]|2月11日| 5|2月12日| 8 [4]|2月12日| 6|2月13日| 5 [5]|2月13日| 3| | Sub test() Dim i As Long 'A列の最下行から2行目まで順番にループ For i = Cells(Rows.Count, 1).End(xlUp).Row To 2 Step -1 'A列の日付がC列に存在するか1行ずつ見ていく。 If WorksheetFunction.CountIf(Range("C:C"), Cells(i, 1)) = 0 Then '日付がない場合、その行のA列とB列を上方向に削除する。 Cells(i, 1).Resize(, 2).Delete Shift:=xlUp End If Next End Sub (フォーキー) 2023/02/23(木) 17:28:43 ---- ご丁寧に再度回答いただきありがとうございます。 実際には日付の先頭はB3から始まっていたり、 数値は日付の横に6列あったりと例で示したレイアウトとは異なっています。 今後質問させていただくときは実際の配置を提示させていただきます。 いただいたコードを少しいじってみて、実際のレイアウトでうまく動くか試してみます。 (おかもん) 2023/02/23(木) 18:22:30