Vba: 列から一意の値を取得する方法
VBA でAdvancedFilter関数を使用すると、Excel の列から一意の値のリストをすばやく取得できます。
一般的な方法は次のとおりです。
Sub GetUniqueValues()
Range(" A1:A11 ").AdvancedFilter_
Action:=xlFilterCopy, CopyToRange:=Range(" E1 "), Unique:= True
End Sub
この特定の例では、範囲A1:A11から一意の値のリストを抽出し、それらをセルE1に表示します。
次の例は、この構文を実際に使用する方法を示しています。
例: VBA を使用して列から一意の値を取得する
さまざまなバスケットボール選手に関する情報を含む次のデータセットが Excel にあるとします。
Team列から一意の値のリストを抽出したいとします。
これを行うには、次のマクロを作成できます。
Sub GetUniqueValues()
Range(" A1:A11 ").AdvancedFilter_
Action:=xlFilterCopy, CopyToRange:=Range(" E1 "), Unique:= True
End Sub
このマクロを実行すると、次の出力が表示されます。
列 E には、元のデータセットのチーム列の一意の値のリストが表示されます。
AdvancedFilterメソッドでは大文字と小文字が区別されないことに注意してください。
たとえば、同じ列にチーム名「MAVS」と「Mavs」がある場合、この特定のマクロは、まったく同じ文字を共有するため、「 Team」列に表示される 2 つの値のうちの最初の値のみを返します。
注: VBA のAdvancedFilterメソッドの完全なドキュメントは、ここで見つけることができます。
追加リソース
次のチュートリアルでは、VBA で他の一般的なタスクを実行する方法について説明します。
VBA: 特定のテキストを含むセルを数える方法
VBA: 範囲内の行数をカウントする方法
VBA: 範囲内の一意の値を数える方法