重複しているデータを省きたい
AdvancedFilterメソッドには重複したデータを省いて抽出する機能があります。
例えば、名前がずらりと並んでいるリストから同じ名前を非表示にして見やすくすることができます。
基本の形
Range(“抽出範囲”). AdvancedFilter Action:=xlFilterInPlace, Unique:=True
複数列で重複するデータを非表示にする場合は、抽出範囲を他列にまたがって指定します。
ただしデータが隣接していなければならないので、表の作成を工夫する必要があります。
重複するデータを非表示にするサンプルコード
以下をA1セルに貼り付けてください。
| 名前 | 個数 |
| A | 10 |
| B | 20 |
| C | 50 |
| A | 30 |
| A | 10 |
| B | 20 |
Public Sub Sample()
'A列の重複するデータを非表示にして抽出する
ActiveSheet.Range("A1:A7").AdvancedFilter Action:=xlFilterInPlace, Unique:=True
'隠れているデータを表示する
ActiveSheet.ShowAllData
'A列とB列の重複するデータを非表示にして
'抽出した結果をD1セルにコピーする
ActiveSheet.Range("A1:B7").AdvancedFilter Action:=xlFilterCopy, _
CopyToRange:=Range("D1"), _
Unique:=True
End Sub
注意点
- 複数列を選択した場合、全てのデータが一致している行を非表示にします。
※上記を参考にすると、2行目と6行目がA,B共に一致しているので6行目が非表示になります。 - 抽出範囲に見出し行(先頭行)を含ませることを忘れずに。
関連記事



コメント