- ベストアンサー
excel2003の、値抽出方法について。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
Excelの一般機能で対応するなら、A列を選択して「データ」「フィルタ」「フィルタオプションの設定」で「重複するレコードは無視する」にチェックを入れ、抽出先を「指定した範囲」にしてC1セルを選択するのがお勧めです。 データ数が多くなると動きが重くなるのであまりお勧めできませんが、補助列を使用しない関数で対応したいなら、以下のような数式を入力して下方向に適当数オートフィルすることになります。 =INDEX(A:A,SMALL(INDEX((MATCH($A$2:$A$100&"",$A$2:$A$100&"",0)<>ROW($A$2:$A$100)-1)*1000+ROW($A$2:$A$100),),ROW(1:1)))&""
その他の回答 (3)
- tom04
- ベストアンサー率49% (2537/5117)
こんにちは! 一例です。 関数の場合 B列を作業用の列として使用します。 B2セルに =IF(COUNTIF(A$2:A2,A2)=1,ROW(),"") という数式を入れオートフィルでしっかり下へコピーしておきます。 C2セルに =IF(COUNT(B:B)<ROW(A1),"",INDEX(A:A,SMALL(B:B,ROW(A1)),)) という数式を入れこれもオートフィルで下へコピー! これで重複なしに表示されます。 VBAの場合というより一番簡単なのは 「フィルタオプション」で「重複するレコードは無視する」にチェックを入れる方法だと思いますが、 いかにもマクロらしくやるとしたら Sub Sample1() Dim i As Long, endRow As Long endRow = Cells(Rows.Count, "C").End(xlUp).Row If endRow > 1 Then Range(Cells(2, "C"), Cells(endRow, "C")).ClearContents End If For i = 2 To Cells(Rows.Count, "A").End(xlUp).Row If WorksheetFunction.CountIf(Range("C:C"), Cells(i, "A")) = 0 Then Cells(Rows.Count, "C").End(xlUp).Offset(1) = Cells(i, "A") End If Next i End Sub こんな感じではどうでしょうか?m(_ _)m
お礼
回答ありがとうございます。 こんな考え方もあるんだというのが、面白くて参考になりました。 出来れば、作業セルは使わず行える方法が望ましいです。
- aokii
- ベストアンサー率23% (5210/22062)
ピボットテーブルを作ると重複していないリストができます。
お礼
回答ありがとうございます。 そうですね。その存在を忘れていました。 簡単に出来る方法として、覚えておきたいと思います。
お礼
「重複するレコードは無視する」というオプションが求めていた回答だった 気がします。 ありがとうございました。