• 締切済み

重複データの抽出

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

みんなの回答

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.8

OKWAVEでimogasi方式で照会してもらえば、似た質問が沢山あります。 A2:A8 A列  B列   E列 1245 1245 1 1365 1365 2 1245 1398 1398 1155 3 1365 #N/A 1155 4 1245 E2に =IF(COUNTIF($A$2:A2,A2)=1,MAX($E$1:E1)+1,"") と入れてE8まで式を複写します。 A列番号について、初出の行に連番を振ります。 B列B2に行って =IF(ROW()-1>MAX($E$1:$E$100),"",INDEX($A$2:$A$100,MATCH(ROW()-1,$E$2:$E$100,0),1)) と入れてE列の最大数4行だけ式を複写します。

  • 134
  • ベストアンサー率27% (162/600)
回答No.7

もとい A2セルに入れる関数は =if(B2="","",if(countif($B$2:$B$8,B2)>1,"",max($A$1:a1)+1)) のほうが、よい…かもしれません。

  • 134
  • ベストアンサー率27% (162/600)
回答No.6

関数にて… A列を計算用に使用させていただきます。 なので、B列に入力用のデータが列記されているとさせてください。 また、1行目は見出しで、2行目からデータが入っているとします。 抽出は… C列 でいいですか? 上記前提の上で… A2セルに =if(countif($B$2:$B$8,B2)>1,"",max($A$1:a1)+1) と入力します。 C2セルに =if(iserror(vlookup(row()-1,$A$2:$B$8,2,0)),"",vlookup(row()-1,$A$2:$B$8,2,0)) と入力 A2の関数とC2の関数を下までコピーする という方法は、いかがでしょうか

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

こんにちは。KenKen_SP です。 【注意】 ・セルの選択範囲は単一列のみ ・ブランクセルも含む Sub Sample()   If UCase$(TypeName(Selection)) <> "RANGE" Then Exit Sub   If Selection.Columns.Count = 1 Then     Selection.AdvancedFilter _          Action:=xlFilterCopy, _          CopyToRange:=Selection.Cells(1).Offset(0, 1), _          Unique:=True   End If End Sub ブランクを含めないとか、Selection が複数列の場合に対応するなら、 別ロジックになります。Collection とか Dictionary とか。

  • mshr1962
  • ベストアンサー率39% (7417/18945)
回答No.4

関数にこだわらないなら A列の先頭行(A1)にセルを挿入して項目名を入力して下記の様にする。 A列    B列   項目    抽出 1245     1365     1245 1398 1365 1155 1245 「データ」「フィルタ」「フィルタオプションの設定」 「指定した範囲」を● 「リスト範囲」「$A$1:$A$8」 「抽出範囲」「$B$2」 「重複するレコードは無視する」にチェックして「OK」を押す。

sunuo
質問者

お礼

早速の回答ありがとうございます。

sunuo
質問者

補足

関数では限界があるみたいなので、VABに挑戦してみたいのですが、1度もやったことがないのですが、難しいでしょうか?

  • ao777
  • ベストアンサー率34% (43/123)
回答No.3

少し無理やりですが、B1に下記の関数を入れて、 後はオートフィルで↓にコピーしてください。 =IF(COUNTIF($A$1:$A$7,A1)>=2,A1,"") これが関数での限界だと思います。 ただこれだと、空白のセルができるので、 思ってる物と違うかも。。

sunuo
質問者

お礼

早速の回答ありがとうございます。

回答No.2

#1です。やってみました。 ダブったものだけ =IF(COUNTIF($A$1:A1,A1)=2,A1,"") ダブらなかったものも含めて =IF(COUNTIF($A$1:A1,A1)=1,A1,"") として下にコピー。A列の数字がでてきますので、どこかに値貼り付けして並び替え、ではいかがでしょうか?

sunuo
質問者

お礼

早速の回答ありがとうございます。 やはり関数では数回の手順が必要なんですね

回答No.1

ダブったものだけ抽出したいのですか、それともダブらなかったものも合わせてですか? いずれにしろ関数では一発では難しいと思います。 もう1列か2列使えばcountifとソートでできそうですが。。。