- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
上の行から順次下で繰り返し判別する。それは 「現在のセルの値」が、「A2から現在行までにおいて」COUNYIFで数を出し、1の場合はC列に持って行き、2以上なら持っていかないようにすれば仕舞。 最近これと同系統の質問が続くが、これがいちばんやさしい。 関数だけでも答えを挙げる人もいるだろう。 Sub test01() lr = Range("A100000").End(xlUp).Row j = 2 For i = 2 To lr x = WorksheetFunction.CountIf(Range("A1:A" & i), Cells(i, "A")) If x = 1 Then Cells(j, "C") = Cells(i, "A") j = j + 1 Else End If Next i End Sub
その他の回答 (2)
- imogasi
- ベストアンサー率27% (4737/17069)
#1です。もう1つ。 Sub test01() 'A1 以下にデータがあること。 'Sheet2があること。 'データのあるシートがアクチブなっていること Range("A1").CurrentRegion.Select Selection.AdvancedFilter Action:=xlFilterCopy, _ CopyToRange:=Sheets("Sheet2").Range("A1"), Unique:=True End Sub データのあるシートと同シートのF列に出すなら Sub test01() 'Sheet1のA1 以下にデータがあること。 'データのあるシートSheet1がアクチブなっていること Range("A1").CurrentRegion.Select Selection.AdvancedFilter Action:=xlFilterCopy, _ CopyToRange:=Sheets("Sheet1").Range("F1"), Unique:=True End Sub Unique:=True がポイント 元データの順序は、結果にも保存されるようだ。
お礼
ありがとうございます。
- ushi2015
- ベストアンサー率51% (241/468)
こんにちは Excelのバージョンにもよりますが、A列をコピーしてC列に貼り付けて データタブの重複の削除を行う作業をマクロに記録してコードを整理する だけでも良いと思います。 Sub Macro1() ' ' Macro1 Macro ' ' Range("A1").Select Range(Selection, Selection.End(xlDown)).Select Selection.Copy Range("C1").Select ActiveSheet.Paste Application.CutCopyMode = False ActiveSheet.Range("$C$1:$C$12").RemoveDuplicates Columns:=1, Header:=xlNo End Sub を下記のように整理します。 Sub test() Range("A1", Range("A1").End(xlDown)).Copy Range("C1") Range("$C:$C").RemoveDuplicates Columns:=1, Header:=xlNo End Sub
お礼
ありがとうございます。
お礼
ありがとうございます。非常に助かりました。