エクセルのバージョンは2003です。

A列2文字、B列2文字の熟語が入っているときに
他の列に、入れ替わってかぶっているものを削除し、
取り出す方法はありますか。
2列のデータが入れ替わっている行も、同じ行もカブリと考えます。


データ例

A  B
算数 国語
算数 理科
松本 佐藤
桑田 竹内
年月 金曜
国語 算数
斉藤 米山
金曜 年月
杉本 長谷
吉岡 西川
・  ・  
・  ・  
・  ・  
・  ・  

というようなデータがたくさんあるときに
1行目の算数 国語と3行目の算数 国語 5行目の国語 算数
の場合は1行目の算数 国語のみ残し、

5行目の年月 金曜と8行目の金曜 年月の場合は
5行目の年月 金曜のみ残すということです

カブリのない松本 佐藤や桑田 竹内などはそのまま残したいです。

ちなみに、このようなカブリが「どこで起こっているか」については
http://oshiete.goo.ne.jp/qa/6697902.htmlにて
教えていただきました

D1に=A1&B1
E1に=B1&A1
で「入れ替わり」を是正したリストを用意し、

C1に=IF(COUNTIF(E:E,D1),MATCH(D1,E:E,0),"")

を入れることでどこでカブッているかわかる大変便利な式で助かりましたが

次の作業として、
カブッている場合に、カブっているものはひとつだけ残す
(フィルタオプションの設定で「重複するレコードは無視する」で
残るようなイメージ)ということがしたいのですが、
そんなことは可能なのでしょうか。

カブリ部分の昇順で削除しようとしてみましたが
後ろのほうにあるとも限らず、断念しました。

さすがにそんな方法はないか…と思っていますが
こちらの皆さんの博識に期待して、よろしくお願いいたします。

このQ&Aに関連する最新のQ&A

リスト C++」に関するQ&A: C# リストの検索

A 回答 (4件)

リンク先の質問の、No.1の回答の



=IF(COUNTIF(E:E,D1),"×","")

この式を

=IF(COUNTIF(E$1:E1,D1),"×","")

に変えれば、後の方のレコードだけに×が入ると思います。
    • good
    • 0
この回答へのお礼

ありがとうございます!!

自分にとってはとても難しいことだったので
あっという間に皆さんがお答えくださっていて
試してみるのに時間がかかりすぎてすみません。

上の方のオートフィルと組み合わせて考えると
これで完璧にできると思います。

式が大変シンプルなこちらをBAといたします
昔だったらBA二つ付けられたのにと悩みました、すぐ上の方にも本当に感謝です。

みなさんありがとうございました。

お礼日時:2011/04/28 13:55

データがA列とB列の2行目から下方にあるとします。


作業列をCおよびD列に作ります。
C2セルには次の式を入力して下方にオートフィルドラッグします。

=A2&B2

D2セルには次の式を入力して下方にオートフィルドラッグします。

=IF(COUNTA(A2:B2)<>2,"",IF(OR(AND(COUNTIF(C:C,B2&A2)=0,COUNTIF(C$2:C2,C2)=1),AND(COUNTIF(C:C,B2&A2)>0,COUNTIF(C$2:C2,C2)+COUNTIF(C$2:C2,B2&A2)=1)),MAX(D$1:D1)+1,""))

お求めの表はFおよびG列に表示させるとしてF2セルには次の式を入力してG2セルまでオートフィルドラッグしたのちに下方にもオートフィルドラッグします。

=IF(ROW(A1)>MAX($D:$D),"",INDEX($A:$B,MATCH(ROW(A1),$D:$D,0),COLUMN(A1)))
    • good
    • 0
この回答へのお礼

ごめんなさい!
気づいたときにはこんなに皆さんから回答が来ていてびっくりです。
みなさんホントにすごいですね。


きっとできるのでしょうが、下でシンプルで希望をかなえてくれるお答えをいただきました。
今回はそちらをBAとしたいと思います。

大変難しい式を考えていただいてすみません、ありがとうございます。

お礼日時:2011/04/28 13:52

一例です。


前回のD・E列を利用すれば、オートフィルタで抽出可能ですが如何でしょうか。
(1)見出し行を挿入、項目名は任意名称(オートフィルタを使用する為)
(2)=COUNTIF($E$2:E2,D2)+COUNTIF($D$2:D2,D2)を設定、下方向にコピー
(3)オートフィルタを設定、C列のフィルタボタンで「1」を選択で抽出
    • good
    • 0
この回答へのお礼

ありがとうございます。

なるほど、
これは(2)の式はC列に入れるのですね。
これは何回かぶっているのかわかるのがよいですね。

式の考え方は下の方と同じでしょうか
BA大変悩みます~

お礼日時:2011/04/28 13:49

そのC1の式を


=IF(COUNTIF($E$1:E1,D1),MATCH(D1,$E$1:E1,0),"")
としてリスト下端までコピーしておきます。

かぶっている後ろ側(下段)の行だけに,自分より上にある何行目とかぶっているのかの数字が現れます。
オートフィルタで「空白でない」を絞って,まとめて抹消して下さい。
    • good
    • 0
この回答へのお礼

ありがとうございます。

この方法は、空白を削除した際に
他とかぶっていないものも削除されてしまいませんか?
(例で言うカブリのない松本 佐藤や桑田 竹内などはそのまま残したいです。)

でもできそうな方向性が見えてきました、助かります。

お礼日時:2011/04/28 13:41

このQ&Aに関連する人気のQ&A

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


人気Q&Aランキング