• ベストアンサー

エクセルで、重複した数字を1つに絞りたい

画像左のように、数字がランダムで並んでいる表があります。 一度しか出てこない数字や、連続で何度もでる数字があります。 どんな数字があるかだけを表にしたいので、重複した部分を消した、画像右のような表が欲しいです。 数字の大小がバラバラな状態の表ですが、同じ数字が後で出てくることはありません。 (例えば、A2~A4以外のセルに11が登場することはありません。) 重複を消した表も、数字の大小を気にする必要はありませんが、できればそのナンバーが登場した順番に整理されていると都合がよいです。 ナンバーは数十万存在します。この作業が簡単にできる方法があればご教授ください。

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

  • ベストアンサー
回答No.1

ていうかExcelのバージョンは? 2003は「データ」→「フィルタ」→「フィルタオプションの設定」で「重複するレコードは無視する」にチェックを入れる、2007なら「データ」タブの「重複の削除」ボタン。

tarte777
質問者

お礼

関数を使うことばかり想定して、難しく考えていました。 他の方々も素晴らしい回答をくださいましたが、もっとも簡単な方法を提示してくださったMa-yan_bh1011さんの回答をベストアンサーにいたします。

その他の回答 (4)

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.5

数十万のデータとなれば複雑な式を使うことは計算の負担となります。作業列を使ってでも簡単な式で対応することです。 B2セルに次の式を入力します。 =IF(A2="","",IF(COUNTIF(A$2:A2,A2)=1,MAX(B$1:B1)+1,"")) B2セルの式をコピーしてから数式バーの左側にある「名前ボックス」がB2と表示されているところをB2:B500000と入力してからEnterを押しますとそれらのセルが選択されますので右クリックして貼り付けを行います。これで式がすべてのセルにオートフィルされることになります。 次にC2セルには次の式を入力して上と同様に下方にオートフィルします。 =IF(ROW(A1)>MAX(B:B),"",INDEX(A:A,MATCH(ROW(A1),B:B,0))) C列にはお望みのデータが並ぶことになります。なお、A列でのデータは必ずしも同じデータが連続したセルにまとまって入力されている必要もありません。

  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.4

 回答番号ANo.2です。 >同じ数字が後で出てくることはありません。  というルールが厳密に守られている場合に限れば、作業列を使わずに、次の様な関数のみで、登場した順番に並べるという方法も可能となります。  まず、C1セルに次の数式を入力して下さい。 =$A$1  次に、C2セルに次の数式を入力して下さい。 =IF(OR(COUNT($A:$A)=0,C1=""),"",IF(C1=INDEX($A:$A,MATCH(MAX($A:$A)+1,$A:$A)),"",INDEX($A:$A,MATCH(C1,$A:$A,0)+COUNTIF($A:$A,C1))))  次に、C2セルをコピーして、C2以下に貼り付けて下さい。  以上です。

  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.3

 回答番号ANo.2です。  先程の回答で、添付画像を貼るのに失敗しましたので、こちらに貼らせて頂きます。

  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.2

【方法その1】作業列を使用して登場した順番に並べる方法(添付画像のC列)  今仮に、E列を作業列として使用するものとします。  まず、E1セルに次の数式を入力して下さい。 =IF(COUNTIF($A$1:INDEX($A:$A,ROW()),INDEX($A:$A,ROW()))=1,ROW(),"")  次に、E1セルをコピーして、E2以下に貼り付けて下さい。  次に、C1セルに次の数式を入力して下さい。 =IF(ROWS($1:2)>COUNT($E:$E),"",INDEX($A:$A,SMALL($E:$E,ROWS($1:2))))  次に、C1セルをコピーして、C2以下に貼り付けて下さい。 【方法その2】作業列は使わずに、関数のみで、数値の小さい順に並べる方法(添付画像のG列)  まず、G2セルに次の数式を入力して下さい。 =IF(MAX(G$1:G1)=MAX($A:$A),"",SMALL($A:$A,COUNTIF($A:$A,"<="&MAX(G$1:G1))+1))  次に、G2セルをコピーして、G3以下に貼り付けて下さい。 【方法その3】作業列は使わずに、関数のみで、数値の大きい順に並べる方法(添付画像のI列)  まず、I2セルに次の数式を入力して下さい。 =IF(COUNT(I$1:I1),IF(MIN(I$1:I1)=MIN($A:$A),"",LARGE($A:$A,COUNTIF($A:$A,">="&MIN(I$1:I1))+1)),MAX($A:$A))  次に、I2セルをコピーして、I3以下に貼り付けて下さい。