前回の続きです。

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

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

Leave a Reply

(required)

(required)

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

© 2011 simple blog いろいろ勉強中 Suffusion theme by Sayontan Sinha