エクセルのバージョンは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を見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qエクセルの質問。同じ数字なら違う列の数字を返す

エクセルについて質問です。
A列は数字が入力されていて、B列はある数字があります。C列にB列と同じような数字を入力していきます。入力したC列の数字が、B列の中にあれば、入力した行にA列の数字をD列に返すことは出来ますか?下記に例を記載します。

A     B     C       D
0  20110210  2010811      
1  20110214  20101025  
2  20110215  2011111    7
3  20110216  2011322 
4  20110217  2011516  
6  20110221  2011325  
7  2011111    20101220  
8  20050223  2011128  


宜しくお願いします。

Aベストアンサー

C列に入力した数字が何処の行にあるかはMATCH関数で判る。
そしてその行のA列をINDEX関数で取ればよい。
問題は見つからないときの処理で式が長くなるが。
例データ A-D列
xyzu
111343
334
221
D2に
=INDEX($A$1:$A$10,MATCH(C2,$B$1:$B$10,0))
B列に該当無いという手当ては、CountIFで0かどうかが良いでしょう。
=IF(COUNTIF($B$2:$B$10,C2)=0,"",INDEX($A$1:$A$10,MATCH(C2,$B$1:$B$10,0)))
もしも空白入力したら、上記でカバーできる。
ーー
Match関数のエラー判定ISERRORも使える。
またMATCH関数の代わりにVLOOKUPも考えられるが、取ってくるA列が、検索するB列より左列にあるため使えない。

Qエクセル2003で、それぞれの行には5列~10列の数値が入っています。

エクセル2003で、それぞれの行には5列~10列の数値が入っています。
それらを常に右から(数値が入っている右端のセル)から4列のみ残す
関数式はどのように組めば良いでしょうか。

Aベストアンサー

添付図参照
L1: =OFFSET($A1,,COUNTA($A1:$J1)+COLUMN(A1)-5)

Qエクセルの列が数字になってしまった。

エクセルの列が数字になってしまった。

上記の通り、エクセルは普通列がアルファベット、行が数字だと思うのですが、
ある日突然、列がアルファベット表示から数字に変ってしまい、数式を入力しても絶対参照
がうまく使えず元通りに設定し直したいのですが、どのうすればいいのでしょうか?

Aベストアンサー

ツール、オプション、全般、設定、のR1C1参照形式を使用するのチェックを外してみてください。

QA列に日付け、B列にその日に買った野菜の名前が入ってます。入力が重複し

A列に日付け、B列にその日に買った野菜の名前が入ってます。入力が重複しないようにしたいのですがうまくいきません。
一列のみでしたら重複する内容のセルに色を付けたりできますが日付と野菜が両方重複する時にメッセージを出したり、色をし変えたりするにはどうしたらよろしいでしょうか?

Aベストアンサー

色付け例です。
条件つき書式設定で数式を=SUMPRODUCT(($A$1:$A$5=$A1)*($B$1:$B$5=$B1))>1で如何でしょうか。
因みにエクセル2007ならば、=COUNTIFS($A:$A,$A1,$B:$B,$B1)で可能です。

QエクセルでA列にある数字の合計が特定の数値を超えたらB列に合計を表示させるには

エクセルについての質問です。
以下の様なエクセルの表でA列の合計が、「10」を超える場合、B列に合計を表示させるには、B列にはどの様な関数を入れれば良いでしょうか。お教えください。
なお、最終行にも合計を表示です。

A列 B列
5
4 9
3
5 8
1
2
1
2 6

VBAを知らないため、何とか、関数で対応できると、大変、助かります。

よろしくお願いいたします。

右側の数字がB列の数字です。
解りにくくて、すみません。

Aベストアンサー

例示のようにならない。
B2セルに
=IF(OR(A3="",SUM(A$1:A3)-SUM(B$1:B1)>10),SUM(A$1:A2)-SUM(B$1:B1),"")
下へオートフィル

解決したいと思うなら、もう少し具体的な説明お願いします。
画面の取り込みは([Alt]+[)[PrintScreen]キーで、ペイント等で貼り付け、加工してください

QA列に入っている文字群の中にB列の字があるかどうか

Excelでお聞きしたいです。Excel2010です。
マクロはわかりません。

A列に入っている「文字群」の中にB列の字があるかどうか見つける方法はありますか。

たとえばA列に

仲買人元様々需要
飛込例身赤帯
真白身酒用
全国各地好応
多種様集下関難無応
各地当然東京都高級料亭舞込

のように複数の(ランダムの数の)漢字が入っていて

B列に







のように字が入っていた場合に

「亜」という字はA列にはないので、「ない」と

「仲」という字はA列にもあるので「ある」と

分かるような関数はありますか。

両方一文字ずつであれば
=IF(COUNTIF(A:A,B1),"○","×")
が使えたのですが、

複数字ではどうでしょうか。
(やってみてできなかったのですが、それが関数自体が間違っているからなのか、
データに何か不備があるのかがわかりません。)

行は100行ぐらいあります。

よろしくお願い申し上げます。

Aベストアンサー

=IF(COUNTIF(A:A,"*"&B1&"*"),"○","×")

としてみてください。

Qエクセル 数字の入っている列をピックアップしたい

エクセルで表を作っており、以下のように各行ばらばらに
違う列に数字が入っています。
また、重複して違う列に数字が入っていることはありません。
この列の中から数字が入っているものを
(入っていないセルは空か0が入っています)
ピックアップした列を作りたいのですが、
適切な関数はありますでしょうか?



 2
  3
   4
    5

Aベストアンサー

1~5がそれぞれAセル~Eセルにあるとすれば、
Fセルに
=a1+b1+c1+d1+e1
と設定して、全行コピーしたらいかがでしょう?
単純すぎますか?

Qエクセルで A列に商品名 B列に商品番号 C列に管理者 が入っています

エクセルで A列に商品名 B列に商品番号 C列に管理者 が入っています。

A B C
あ 001 佐藤
い 002 鈴木
う 003 田中
え 004 伊藤
お 005 三木

以下600行くらい続いています。
商品名は重複していません。

D列を空列にしE列に商品名をいくつか並べたときに、
F列とG列に商品番号と管理者を表示させたいのですが、
どの関数を使えばいいのかよくわかりません。

環境はエクセル2003です。

Aベストアンサー

こんにちは。

 下記サイトをご参照ください。
  http://allabout.co.jp/gm/gc/3143/
  VLOOKUP関数で一覧表から検索できます。

では。

Qエクセルで1列に入っている数字を抜き出したい

お世話になります。

エクセルの2003で1列に入っている数字(文字)を別シートで抜き出したいです。
たとえば、
A列
2001
2002
2003
2001
2003
2004
2004
2001
 :
と、バラバラに長く入っています。
これを別のシートに
A列
2001
2002
2003
2004
とまとめたいのです。
個数等は必要ありません。
純粋に入っている数字の種類を飛ばしたいのです。
宜しくお願いいたします。

Aベストアンサー

こんにちは!

データは数値だという前提で・・・

作業用の列を使うのが一番簡単だと思います。
データはA1セルからあるとします。
Sheet1のB列を作業用の列として、
B1セルに
=IF(COUNTIF(A$1:A1,A1)=1,A1,"")
という数式を入れ、これ以上データはない!というくらいしっかり下へオートフィルでコピーしておきます。

そしてSheet2のA1セルに
=IF(COUNT(Sheet1!B:B)<ROW(A1),"",SMALL(Sheet1!B:B,ROW(A1)))
という数式を入れ下へコピー!

こんなんではどうでしょうか?m(_ _)m

QエクセルのA列で同じデータがあった場合、C列にB列のデータを合体して表示

エクセルのA列で同じデータがあった場合、C列にB列のデータを合体して表示、…というと説明不足ですが、要は以下のような感じです。
A    B
あああ a
あああ b
いいい c
ううう d
えええ e
いいい f

このときC列には

A    C
あああ ab
あああ ab
いいい cf
ううう d
えええ e
いいい cf

となるようにしたいです。
ご教授ください。

Aベストアンサー

No.2です!
たびたびお邪魔します。

重複の数が多い場合にも対応できる方法をお望みみたいなので、
一気にやろうとすると途方もなく長い数式しか思いつきませんので
↓の画像のように作業用の表を使う方法はどうでしょうか?

とりあえず、データが1000行目まで対応できる方法です。
作業列E2セルに
=IF(COUNTIF($A$2:A2,A2)=1,ROW(A1),"")
という数式を入れ、オートフィルでずぃ~~~!っと下へコピーします。
(これは作業用の表の列方向にA列の項目を重複なしに表示するためです。)
そして、F2セルに
=IF(COUNT($E$2:$E$1000)<COLUMN(A1),"",INDEX($A$2:$A$1000,SMALL($E$2:$E$1000,COLUMN(A1))))
という数式を入れ列方向(右方向)のオートフィルでコピーします。

F3セルに
=IF(OR(F$2="",COUNTIF($A$2:$A$1000,F$2)<ROW(A1)),"",INDEX($B$2:$B$1000,SMALL(IF($A$2:$A$1000=F$2,ROW($A$1:$A$999)),ROW(A1))))
(この数式だけが配列数式になりますので、前回同様に
Shift+Ctrl+Enterキーで確定してください。)

これを列方向と行方向にオートフィルでコピーします。

そして、F16セルに(画像ではF16セルにしていますが、何行目でも構いません)
=CONCATENATE(F3,F4,F5,F6,F7,F8,F9,F10,F11,F12)
という数式を入れ、列方向にコピーします。
とりあえず、重複が10あっても大丈夫です。

最後にC2セルに
=IF(A2="","",A2&INDEX($F$16:$K$16,,MATCH(A2,$F$2:$K$2,0)))
という数式を入れ、オートフィルで下へコピーしています。

以上、長々と書いた上に、結構手間がかかる方法ですが
参考になれば幸いです。
他に良い方法があれば読み流してくださいね。m(__)m

No.2です!
たびたびお邪魔します。

重複の数が多い場合にも対応できる方法をお望みみたいなので、
一気にやろうとすると途方もなく長い数式しか思いつきませんので
↓の画像のように作業用の表を使う方法はどうでしょうか?

とりあえず、データが1000行目まで対応できる方法です。
作業列E2セルに
=IF(COUNTIF($A$2:A2,A2)=1,ROW(A1),"")
という数式を入れ、オートフィルでずぃ~~~!っと下へコピーします。
(これは作業用の表の列方向にA列の項目を重複なしに表示するためです。)
そして、F2セ...続きを読む


人気Q&Aランキング

おすすめ情報