我がまちの「給食」自慢を聞かせてっ!

 エクセルの重複セルの削除において、通常、条件が一つの場合は出来るのですが、複数セルの組み合わせの場合、どのようにすればいいでしょうか?

 例えば、下記のように項目が並んでいるとします
    A     B   C    D
 1 メーカー  車種
 2 トヨタ  クラウン
 3 トヨタ  アルファード
 4 トヨタ  カローラ
 5 トヨタ  クラウン
 6 ホンダ  シビック
 8 ホンダ  オデッセイ
 9 ホンダ  アコード
10 日産   サニー
11 トヨタ  クラウン
12 日産   スカイライン
13 日産   セドリック
14 ホンダ  シビック
 ↓   ↓
  このような配列でデーター項目セルが1万ほどあります。
 例えば、このうちメーカーがトヨタで車種がクラウン(A2+B2)
の組み合わせの重複を見つけ、重複行を削除するにはどのようにすればよいでしょうか?
メーカーだけの重複を見つけ、重複行の削除をするには
 いつもは=IF(COUNTIF($A$2:A2)>1,NA(),"")のような方法でNA()を返し、ジャンプ→エラー値で一括削除しています。
 このような2つの組み合わせの場合、どのような式を立てれば良いでしょうか?教えていただけないでしょうか?

A 回答 (5件)

(1)VBAを使う


(2)SortしてVBAを使う
方法がありますが、略
(3)A、B列を結合した文字列をC列に作りそこで関数で重複しないものだけに連番を振る。後はimogasi方式で、別シートなどに抜き出しする。(imogasi方式は、私の過去の回答例に沢山有ります)
「A、B列を結合した文字列をC列に作る」ときに、A列の最高文字数を見繕い、もしそれが10桁とするなら、
=A1&REPT( " ",10-LEN(A1))&B1
のようにするのがお勧めです。
連番は
A2:A7が
A列  B列(関数式結果)
aa1
bb2
aa
cc3
bb
dd4
の場合
B2には=IF(COUNTIF($A$2:A2,A2)=1,MAX($B$1:B1)+1,"")
と入れてB7まで式を複写します。
この1,2,3,4を頼りにSheet2の第1,2,3,4行にSheet1のデータを持ってきます。
(4)ピボットテーブルも使えるかも
コード1コード2計数
aax1
bby2
aax3
ccc4
のようなデータに対し
データの個数 / 計数
コード1コード2合計
aax2
aa 合計2
bby1
bb 合計1
ccc1
cc 合計1
総計4
のような表が即座にできます。
ピボットの操作の「レイアウト」の指定のところで
「行」にコード1とコード2をドラッグし、「データ」には「データの個数」をドラッグします。
    • good
    • 0
この回答へのお礼

お礼が遅れてすみませんでした。複雑な条件になると分かりにくいので参考になりました。
 自分でやってみて、検証してみます。有難うございました。

お礼日時:2006/12/03 16:10

[フィルタオプションの設定]の“重複するレコードは無視する”機能を使うのが簡単かと。


1万行だと時間が掛かりそうだけど、その間は珈琲でも飲んでおけば好い。(^_^)
    • good
    • 3

◆メーカが違って同じ車種は無いのではないでしょうか!


◆C列を作業列にして
C2=COUNTIF($B$2:B2,B2)

◆フィルタで、C列の「1」を抽出してください
    • good
    • 0

すご~く、どんくさい方法ですが、恥を忍んで紹介します。



・A列=メーカー、B列=車種、とします。
・「A列~●列(データが入っている最後の列)」を対象に「データ」「並び替え」にて「優先されるキー」を「列:A・昇順」「列:B・昇順」「ほか・なし」とし、ソートします。
・「●の次の列」の、例えば2行目に「=IF(AND(A2=A1,B2=B1),"*","")」を入力し、全行にコピーします。すると重複している行には"*"が表示されます(重複が始まる最初の行には"*"が表示されません)。
・「●の次の列」で、「コピー」「形式を選択して貼り付け」で「値」をチェックし貼り付けます。これで「=IF(AND(A2=A1,B2=B1),"*","")」は全て"*"かブランクになります。
・「A列~●の次の列」で「データ」「並び替え」にて「優先されるキー」を「列:●の次・降順」とし、ソートします。
・1行目からず~と「●の次の列」に"*"が入った行が続きます。
・"*"が入った行を全て削除します。
・これでA列・B列が重複した行はなくなります。

超どんくさい方法で恐縮ですが、もしお気に召せば、お試し下さい。
    • good
    • 1

A列データとB列データを結合した作業列を使って


検索すればよろしいかと
   C            D
=CONCATENATE(A2,B2)   =IF(COUNTIF($C$2:C2,C2)>1,NA(),"")

1万行までコピー
    • good
    • 3

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報