Excelで1行残して重複行を削除(複数の項目でチェック)

Written on 火曜日, 4月 8th, 2008 at 12:07 by admin
Filed under VBAのお勉強.

前回の続きです。

B列、C列の両方の項目を見て、重複しているものは最初のものを残して削除する、という感じです。

プログラムです。

Visual Basic:
  1. Sub test()
  2.  
  3.     Dim lastgyou As Integer
  4.     Dim i As Integer
  5.     Dim j As Integer
  6.  
  7.     Dim checkataiB As String
  8.     Dim checkataiC As String
  9.  
  10.     'B列の最終行を求めます。
  11.     lastgyou = ActiveSheet.Cells(ActiveSheet.Rows.Count, 2).End(xlUp).Row
  12.  
  13.     '1行目から最終行の前まで繰り返します。
  14.     For i = 1 To lastgyou - 1
  15.  
  16.         'チェックする値を、checkataiB、checkataiCに代入します。
  17.  
  18.         checkataiB = ActiveSheet.Cells(i, 2).Value
  19.         checkataiC = ActiveSheet.Cells(i, 3).Value
  20.  
  21.         '今見てる行から、下をチェックします。
  22.         For j = i + 1 To lastgyou
  23.  
  24.             'もし、値が同じであれば、
  25.             If checkataiB = ActiveSheet.Cells(j, 2).Value And checkataiC = ActiveSheet.Cells(j, 3).Value Then
  26.  
  27.                 'その行を削除します
  28.                 ActiveSheet.Rows(j).Delete
  29.  
  30.                 '最終行が1行減ったのでlastgyouの値を減らします。
  31.                 lastgyou = lastgyou - 1
  32.  
  33.                 'チェックしている行を1行前に戻します。
  34.                 j = j - 1
  35.  
  36.             End If
  37.  
  38.         Next j
  39.  
  40.     Next i
  41.  
  42.  
  43. End Sub

前回のプログラムとそんなに変わりません。チェックする項目を変数2つに入れ、その値を両方ともチェックしていくという方法ですね。

実行すると、こんな感じ。

ん、うまいこと消えました(^^)ここに置いておきます。→vbastudy_25

こんな感じで、チェックしたい項目が増えれば、同じように変数に代入して、その値をチェックする、、、とすればよいですね。

コメントをどうぞ