• ベストアンサー

Exel 重複データの抽出

Exel2003を使用してます。 A列(A2~A25000まで)に数字(10桁程度)が大量に並んでいます。 その中に、同じ数字が存在してるのですが、 重複する数字を削除したい    もしくは 重複する数字を抽出したい  のですが、 関数などで出来ないでしょうか? よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.3

こんにちは。maruru01です。 数式以外の方法です。 A列を選択して、メニューの[データ]→[フィルタ]→[フィルタオプションの設定]で、 [重複するレコードは無視する]にチェックを入れてフィルタを掛けます。 これで重複なしでフィルタリングされます。 また、[抽出先]の[指定した範囲]にチェックを入れて、 [抽出範囲]に書き出す範囲(の左上のセル)を指定すると、 重複なしのデータが抽出範囲へ書き出されます。

picopicolina
質問者

お礼

ありがとうございます!!! 私が何となく記憶のどこかにあった方法はこれでした! 妙にスッキリしましたぁ~

その他の回答 (4)

  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.5

>関数などで出来ないでしょうか? 、、、VBAは却下?、、、参考なら? 関数やフィルタよりも早いかもしれません。 テスト環境:Win98SE + EXCEL2002(SP3) データの構成にもよりますが、CPU:C500MHz Mem:192M の今となっては非力なノートPCで、25000件の 十桁数字のデータを約5秒程度で処理できました。ご参考までに。ソースは汚いですが。 【以下コード】 Sub 重複データ除去()   Dim objDic As Object   Dim DataRng As Range   Dim rngCel As Range   Dim strKey As String      On Error Resume Next   Set DataRng = Application.InputBox( _     "・連続するセルを選択するには" & vbCrLf & "[Shift]+[Ctrl]+[矢印キー]が便利です" & vbCrLf & _     "・セル範囲は連続していなくても構いません", "データ範囲を指定します", Type:=8)   If DataRng Is Nothing Then Exit Sub   On Error GoTo 0      '重複の無い値リスト   Set objDic = CreateObject("Scripting.Dictionary")   With objDic     'String型の変数で比較する(Long型より高速)     For Each rngCel In DataRng       strKey = rngCel.Value       If Not (IsEmpty(strKey) Or .Exists(strKey)) Then         .Add Key:=strKey, Item:=Empty       End If     Next rngCel     '貼付け先      SelectPasteCell:     On Error Resume Next     Set DataRng = Application.InputBox( _       "重複のない値リストの準備ができました" & vbCrLf & _       "セルをひとつ選択して下さい", "データ貼付け先のセルを指定します", Type:=8)     If DataRng Is Nothing Then Exit Sub     If DataRng.Rows.Count > 1 Or DataRng.Columns.Count > 1 Then       MsgBox "セルをひとつだけ選択して下さい"       GoTo SelectPasteCell     End If     On Error GoTo 0          If .Count > 65536 - DataRng.Row Then       res = MsgBox("選択されたセルでは全ての値を貼付けることができません" & vbCrLf & _           "続行しますか?", vbYesNoCancel + vbDefaultButton2 + vbExclamation, "警告")       Select Case res         Case Is = vbCancel: GoTo ExitHandler         Case Is = vbNo: GoTo SelectPasteCell         Case Else       End Select     End If     DataRng.Resize(.Count) = Application.Transpose(.keys)   End With ExitHandler:   Set objDic = Nothing End Sub

picopicolina
質問者

お礼

VBAは習ったことがあるだけでして。。。 処理は5秒ほど、ということですが、 残念ながら私の頭での処理時間はもっとかかってしまいそうです。 こういう操作も出来れば、もっと便利なんですね。 ありがとうございました。

  • takibo
  • ベストアンサー率57% (116/200)
回答No.4

B列を作業列として (1)B2に「=COUNTIF($A$2:$A2,A2)」と入力 (2)B3~B25000にコピー B列が「2」以上になっているデータはその数だけ重複していることになります。

picopicolina
質問者

お礼

ありがとうございます。 本当に色々な方法があるものですね。 重複している数を知る、ことも出来るのですねー 参考にさせて頂きます。

noname#13108
noname#13108
回答No.2

こんにちは。 1.A2:A25000を小さいほうから順に並び替え 2.B2に「=exact(a2,a3)」を入力 3.B3以降にコピー・ペースト (B2セル右下隅にカーソルをもって行き、黒十字カーソルになったら、Wクリック) 4.B列を最優先に小さいほうから順に並び替え 5.A列の「並べ替え前のA25000の数値」より下に表示されている数値が、求めたい重複した数値 ちょっとややこしく、面倒かもしれませんが、 マクロに頼らず、時間もかからないと思います。

picopicolina
質問者

お礼

ありがとうございました。 おっしゃる通り、あまり時間がかからず出来ました。

回答No.1

私は重複調査のときは下記のマクロを使用させてもらってます。25000件ですと少し時間がかかるかもしれないですけど。

参考URL:
http://www.morgan.co.jp/kiso/kiso_ex03.htm
picopicolina
質問者

お礼

早速にありがとうございました。 便利なURLを教えて頂いたので、お気に入りに入れてしまいました。 色々と今後の参考にさせて頂きます。

関連するQ&A

  • 重複データの抽出

    重複した数字のデータを抽出してまとめたいのですが教えていただけないでしょうか? 例えば A列    B列   1245     1365     1245 1398 1365 1155 1245 この表を      A列    B列   1245    1245 1365    1365 1245    1398 1398    1155 1365 1155 1245 のようにまとめたい A列の重複したデータを抽出しB列にまとめたいのですが、なるべく関数でやりたいのですが、良い方法をお願いいたします。

  • EXELで条件抽出をしたい…

    教えて下さい。EXELで作った下のような表(データ)がありその条件に合う人を抽出したいんですが…       A   B   C   D 1 Aさん 1234  2345  3456  4567 2 Bさん 6788  1234  5556  7778 3 Cさん 7788  7778  5443  7789 A~Dのセルにランダムに並んだ数字を入力している(ここでは、番号(1234)と入力している)人を関数を使い一発表示したいんですが。  A列だけに1234という数字を入力している人を抽出し、条件にあえば「○」という表示をできるようにはIF関数を使いできましたが、 AさんのA列、B列、C列全てを検索範囲に入れた、(たとえば「1234」と入力しているなら「○」等で表示(抽出)したいんですが…それができる関数を教えて下さい。列ごとしかできないのか…??? 分かりにくいですか? (^_^; 宜敷お願いします。

  • Excel特定の文字列を抽出する関数を教えてください。

    A列に***AAA/2桁の数字***と言う値があります。 *はランダムです。 2桁の数字もランダムです。 AAA/2桁の数字のみを抽出する関数を教えてください。 重複する値は、1つを残して削除したいです。 よろしくお願いします。

  • 重複するデータの抽出について(エクセル)

    エクセル2003にて重複するデータの取り出しをしたいのですが、 わからないので教えてください。 例えば   A列   B列   C列    D列    E列・・・ 1  色  1回目  2回目  3回目   4回目 2  赤   あ    a      A       0 3  白   い    b      B       1 4  黄   う    c      C       2 5  黄   え    d      D       3 6  黒   お    e      E       4 7  赤   か    f      F       5 : このデータの中から、別のシートのA1に 赤と入力したら、B1にD列のA・Fを抽出 黄と入力したら、B1にD列のC・Dを抽出をしたいです。 VLOOKUP関数を使用してみたのですが、 赤と入力すると、D列のA(1番上のデータ)のみしか抽出出来ず、Fが抽出されません。 重複するデータがあるのはA列のみで、D列には重複するデータはありません。 わかりにくい文章ですみませんが、よろしくお願いします。

  • 重複したデータを抽出

    「フィルタオプションの設定」で重複したデータを抽出できますよね。 しかし今回は、関数を使用して重複したデータを抽出してみたいのですが、関数を使用しての抽出は無理なのでしょうか?

  • excel2007 重複する値の抽出について

    いつもお世話になっております。 またお知恵を拝借しようと思い、質問しております。 重複するデータから 3つ重複する値のみを抽出したいときの抽出方法を教えてください。 例) A B 1 重複 1 重複 2 重複 2 重複 2 重複 3  4 重複 4 重複 4 重複 5 IF(COUNTIF($A$1:$A$10,A1)>1,"重複","") で重複するものは確認できました。 ここから3つ重複している値のみを抽出したいときの抽出方法がわからなくて困っています。 簡単な方法はありますか? 2つ重複している値と1つだけの値を削除すればいいのですが、大量にデータがあります。 重複のみを抽出した後、2つ重複した値だけを削除できる方法か、3つ重複した値のみ抽出する方法はありますか? 重複するのは3つまでで、なんせ3つ重複している値のみにしたいというわけです。 excel2007使用。「重複を削除」をすると全ての重複が削除されてしまうので、困っています。 どうかお力をお貸しください。

  • エクセルでの列と列の比較、重複データ個数抽出

    すいません。どなたか教えてください。 今、エクセル2003を使用しているのですが、ある条件でデータの個数が抽出出来ません。 お知恵をお貸しください。   A列 B列 1 あ   あ 2 い   う 3 う    い 4 え    5 お   か A列とB列を比べると、「あ、い、う」の3つのデータが重複しています。 そこで、一つのセルで3個とい値を返したいです。 条件として、 ・計算用のシートや別セルを使わずに、例えば、C1などの1つのセルの中で関数を使用して個数を出したいです。 ・できたらマクロも使用しないでやりたいです。 ・数字ではなく、文字列の比較で、空白行もあります。 やはり、列同士の比較は一つのセルの中でやることは不可能なのでしょうか? どなたかよろしくお願いいたします。

  • 重複しないデータの抽出について

    こんにちわ。 エクセルでつぎのようなリストがあるとします。A,B列セットで重複しないデータを一度に抽出したいのですが、どうしたらいいですか?    A列     B列     1     1     1 2     1     2     3     2     1 4     1     2 5     2     2 6     1     1 結果 A列    B列       1    1       1    2       2    1      2    2

  • データの抽出

    はじめまして、現在下記の様な勤務表を使用しており    | A | B | C | ________________  1 | 営 | 52 |   | ________________  2 | 21 |   | 打 | ________________  3 | 営 | 21 |   | ________________  4 |   | 打 | 52 | ________________  5 |   | 18 | 営 | ________________ と言う感じに3列のセルに文字及び数字を入力しているのですが これを重複は省いて抽出する事は出来るでしょうか? 下記の様な感じに並べたいのですが、    | D | E | F | ________________  1 | 営 |   |   | ________________  2 | 打 |   |   | ________________  3 | 18 |   |   | ________________  4 | 21 |   |   | ________________  5 | 52 |   |   | ________________ 空白は省いて、入力された文字及び数字を1列で 重複したものは1つのみ抽出 解りにくい説明だと思いますが宜しくお願い致します。

  • 65000以上のデータの重複検索

    ■A列・B列に6桁の数字が入力されています。 ※データ数が65000以上なのでA列では収まりきれません。 A列・B列の中で重複しているものを見つけたいのですが、 どのようにするのがベストでしょうか? 通常COUNTIFを使用するのですが、2列にまたがっている為うまく出来ません。 お教えいただけましたら助かります。 よろしくお願い致します。

専門家に質問してみよう