Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


1275 / 13644 ツリー ←次へ | 前へ→

【75302】どこがまずいのでしょうか tomo 14/2/7(金) 10:54 質問[未読]
【75303】Re:どこがまずいのでしょうか kanabun 14/2/7(金) 11:09 発言[未読]
【75305】Re:どこがまずいのでしょうか tomo 14/2/7(金) 12:27 お礼[未読]
【75304】Re:どこがまずいのでしょうか kanabun 14/2/7(金) 11:41 発言[未読]

【75302】どこがまずいのでしょうか
質問  tomo  - 14/2/7(金) 10:54 -

引用なし
パスワード
   重複行削除練習のため、下記のように入力しました。
A6,A7の各行が削除されるものと思いましたが、
削除されません。どこがまずいのでしょうか。
素人です。端的に、ここをこうすればよい
というご教示だけをいただきたいのですが。
(専門的なこと、付加的なことを言われてもよく分かりませんので。)
  A列   B列
1  AB   1111
2  AB   1112
3  AB   1113
4  AB   1114
5  AB   1115
6  AB   1111
7  AB   1112

プロシージャは次としました。
Sub 重複行削除()
  Dim i As Long
  With Range("B1")
    For i = .CurrentRegion.Rows.Count To 1 Step -1
      If .Offset(i, 0) = .Offset(i - 1, 0) Then .Offset
                   (i,0).EntireRow.Delete
    Next i  
  End With
End Sub

【75303】Re:どこがまずいのでしょうか
発言  kanabun  - 14/2/7(金) 11:09 -

引用なし
パスワード
   ▼tomo さん:

>A6,A7の各行が削除されるものと思いましたが、
>削除されません。どこがまずいのでしょうか。

そのコードは、表がB列で並び替えられていれば、そのままで動作します。

Sub 重複行削除2()
  Dim i As Long
  With Range("B1")
    .CurrentRegion.Sort Key1:=.Cells, Header:=xlNo 'B列でSort
    For i = .CurrentRegion.Rows.Count - 1 To 1 Step -1
      If .Offset(i) = .Offset(i - 1) Then _
         .Offset(i).EntireRow.Delete
    Next i
  End With
End Sub

【75304】Re:どこがまずいのでしょうか
発言  kanabun  - 14/2/7(金) 11:41 -

引用なし
パスワード
   別法で、
作業列使っていいのなら、並び替えなくてもできます。

Sub 重複行削除3()
  With Range("B1").CurrentRegion.Columns(3)
    .Formula = "=IF(COUNTIF($B$1:$B1,B1)>1,TRUE,$A$1)"
    On Error Resume Next
    .SpecialCells(xlFormulas, xlLogical).EntireRow.Delete
    On Error GoTo 0
    .EntireColumn.Delete
  End With
End Sub

【75305】Re:どこがまずいのでしょうか
お礼  tomo  - 14/2/7(金) 12:27 -

引用なし
パスワード
   ▼kanabun さん:
親切なご指導に感謝します。
目的が達成できました。
ありがとうございます。
>▼tomo さん:
>
>>A6,A7の各行が削除されるものと思いましたが、
>>削除されません。どこがまずいのでしょうか。
>
>そのコードは、表がB列で並び替えられていれば、そのままで動作します。
>
>Sub 重複行削除2()
>  Dim i As Long
>  With Range("B1")
>    .CurrentRegion.Sort Key1:=.Cells, Header:=xlNo 'B列でSort
>    For i = .CurrentRegion.Rows.Count - 1 To 1 Step -1
>      If .Offset(i) = .Offset(i - 1) Then _
>         .Offset(i).EntireRow.Delete
>    Next i
>  End With
>End Sub

1275 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free