「みんな教えて! 選手権!!」開催のお知らせ

A列には地名、B列にはお店が書いてあるような表で
A列とB列の組み合わせが他の行でもあった場合それを表示しないよう
にさせたいんです。
たとえば以下な表を、(A,B列は元から記入されています)

│A   │B     │C│D│││││
1│東京  │ラーメン屋│ │││││
2│東京  │花屋    │ │││││
3│神奈川│花屋    │ │││││
4│東京  │ラーメン屋│ │││││
5│神奈川│自転車屋 │ │││││
6│埼玉  │ラーメン屋│ │││││
7│神奈川│花屋     │ │││││

を・・

│A   │B      │C  │D │E│
1│東京  │ラーメン屋│東京 │ラーメン屋│2│
2│東京  │花屋    │東京 │花屋 │2│
3│神奈川│花屋    │神奈川│花屋 │1│
4│東京  │ラーメン屋│神奈川│自転車屋 │2│
5│神奈川│自転車屋 │埼玉 │ラーメン屋│1│
6│埼玉  │ラーメン屋│    │ │ │
7│神奈川│自転車屋 │     │ │ │

というように、C列、D列、E列に、A,B列の元データで共に重複している
部分を表示させないようにするには、どうしたらよいでしょうか?

ちなみに、マクロはなるべく使わず、関数で教えてもらえると有難いです。
よろしくお願いします。

A 回答 (3件)

訂正です


(3)F2に「=IF(D2="","",COUNTIF($C2:&C&100,C2))」と入力

(3)F2に「=IF(D2="","",COUNTIF($C2:$C$100,C2))」と入力
としてください。

このままだとばらばらにデータが入ったままなので
(1)D~F列のデータを選択→コピー
 →右クリック「形式を選択して貼り付け」で「値」で貼り付けておく
(2)D~F列のデータ範囲を選択して「データ」→「並び替え」で並び替える

もしくはデータの順番をデータの登場順のままで整理したいなら
(1)D~F列のデータ範囲を選択して「データ」→「フィルタ」→「オートフィルタ」
(2)D列の△印→「空白せる以外」をクリック
(3)データをいったん別シートに「値」でコピペしておき、オートフィルタを解除しなおしてからもとのシートに貼り付けてなおしてください。
    • good
    • 0

作業列を使わない方法ですが、少し難しくなりますよ。


以下の表があるとき
     A列   B列     C列   D列   E列
1行目 東京  ラーメン屋
2行目 東京  花屋
3行目 神奈川 花屋
4行目 東京  ラーメン屋
5行目 東京  自転車屋
6行目 埼玉  ラーメン屋
7行目 神奈川 花屋
8行目 東京  花屋
9行目 東京  金物屋

C1セルに
 =INDEX(A:A,SMALL(INDEX(SUBSTITUTE((MATCH($A$1:$A$100&$B$1:$B$100,$A$1:$A$100&$B$1:$B$100,0)=ROW($1:$100))*1,0,10^5)*ROW($1:$100),),ROW(Y1)))
を貼り付けてD1セルおよび下方向にコピーしてください。すると以下のような結果になります(実際に試した結果を載せました)

     A列  B列      C列   D列     E列
1行目 東京  ラーメン屋  東京 ラーメン屋
2行目 東京  花屋     東京  花屋
3行目 神奈川 花屋     神奈川 花屋
4行目 東京  ラーメン屋  東京  自転車屋
5行目 東京  自転車屋   埼玉  ラーメン屋
6行目 埼玉  ラーメン屋  東京  金物屋
7行目 神奈川 花屋     #REF!  #REF!
8行目 東京  花屋
9行目 東京  金物屋

表示するものがないセルが#REFエラーにならないようにするには、C1セルの式は条件判定を追加して以下にします。右、および下方向にコピーしてください
 =IF(SUM(INDEX((MATCH($A$1:$A$100&$B$1:$B$100,$A$1:$A$100&$B$1:$B$100,0)=ROW($1:$100))*1,))>=ROW(Y1),INDEX(A:A,SMALL(INDEX(SUBSTITUTE((MATCH($A$1:$A$100&$B$1:$B$100,$A$1:$A$100&$B$1:$B$100,0)=ROW($1:$100))*1,0,10^5)*ROW($1:$100),),ROW(Y1))),"")

質問にはE列の説明がありませんが、出現回数でしょうか?
E1セルの式は以下になります
 =SUMPRODUCT(($A$1:$A$9&$B$1:$B$9=C1&D1)*1)
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
作業列を使わないでも出来るんですね。すごいです。ただちょっとこの
長い関数を理解できずにいます^^;

説明不足のE列(すいません。)についても表からばっちり理解していただき感謝です。

お礼日時:2008/08/07 09:22

(1)C2に「=A2&B2」と入力し、下にフィルコピー


(2)D2に「=IF(COUNTIF(C$2:C2,C2)=1,A2,"")」
E2に「=IF(COUNTIF(C$2:C2,C2)=1,B2,"")」と入力し、下にフィルコピー
(3)F2に「=IF(D2="","",COUNTIF($C2:&C&100,C2))」と入力し、下にフィルコピー
これで重複しないリストと重複数のリストができます。
    • good
    • 1
この回答へのお礼

ありがとうございます。とても参考になりました。
「&」で合わせて一つの文字列にするといいんですね。

お礼日時:2008/08/07 09:16

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

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


おすすめ情報