- 締切済み
エクセル 重複するものをピックアップ
エクセル2007で重複する名前を一気にどちらかのシート上でピックアップしたいのですが、なにかいい方法はありますでしょうか。 シート1 → 田中 シート2→ 佐々木 高橋 木村 鈴木 香川 岩井 青木 木村 岩井 中川 須藤 近藤 鈴木 鈴木と岩井と木村とをピックアップできるようにしたいのです。
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- tom04
- ベストアンサー率49% (2537/5117)
No.3です! たびたびお邪魔します。 補足の件についてですが、 >A列とB列でA列のほうが行数が多い場合でも同じやり方でOKでしょうか。 とありますが、Sheet1とSheet2で重複しているものだけの行番号をB列に表示させる数式ですのでA列よりB列が多くなるということはありません。 前回提示した後半部分の数式の説明をしておきます。 作業列B2セルのIF関数 =IF(COUNTIF(Sheet2!$A$2:$A$100,A2),ROW(A1),"") の前半部分、COUNTIF(Sheet2!$A$2:$A$100,A2),ROW(A1) は Sheet2のA2~A100セルの範囲にSheet1のA2のものがあれば、その行の番号を表示しなさい。 後半の ,"") はそうでない場合は空白にしなさい。と言う意味です。 このROW(A1)というのは 「1」のことで、オートフィルで下へコピーするに従って ROW(A2)=2 ROW(A3)=3 ・・・といった具合に行番号が表示されます。 (別に(A1)でなくても(B1)でも(C1)でも行番号のことですので、同じ数値になります) そして結果の =IF(COUNT($B$2:$B$100)<ROW(A1),"",INDEX($A$2:$A$100,SMALL($B$2:$B$100,ROW(A1)))) の意味ですが、まず前半部分 COUNT($B$2:$B$100)<ROW(A1),"", は 作業列B2~B100の数値の数がオートフィルでコピーした行数より少ない場合は空白にしなさい。 すなわち、B列に表示されている数字の個数より行が多い場合はエラー表示させないための数式です。 (この場合のROW(A1)の先ほど述べた通りですのでオートフィルで下へコピーするたびにその数値は 1・2・3・・・と大きくなっていきます) そして後半の INDEX($A$2:$A$100,SMALL($B$2:$B$100,ROW(A1) 部分は A2~A100を範囲指定し、B列を参照して数値の小さい順に一致するA列を表示しなさい。という意味です。 「SMALL(範囲),ROW(A1)」は範囲で小さい順から1番目!ということです。 これをオートフィルで下へコピーすると ROW(A2) となりますので、2番目・ROW(A3)は3番目・・・といった具合です。 画像をみるとB列で一番小さいものは「3」になっていますので、 結果の1行目に「3」があるA列のものを表示している!ということになります。 以上、長々とかいてしまいましたが、この程度で良かったですかね? 尚、>これが実際に使いこなせる様になるまではどの程度の勉強期間が必要ですか。 に関してですが、いずれにしても一気に!というわけにはいかないと思いますので、 ↓のURLなどが参考にならないでしょうか? http://akubizzz.hp.infoseek.co.jp/index.html 他の方法としてはこの「教えて goo~!」などのサイトで他の方の質問とその回答を見るだけでも勉強になるのではないでしょうか? いずれにしても焦らずにボチボチが一番かと思います。 何にしても最初から出来る人はいませんもんね! 本当に!長々と失礼しました。m(__)m
- tom04
- ベストアンサー率49% (2537/5117)
こんにちは! 色々方法はありますが・・・ 一例です。 Sheet1のB列にSheet2にあるものを表示させます。 Sheet1のB1セルに =IF(COUNTIF(Sheet2!$A$1:$A$100,A1),A1,"") (Sheet2の100行目まで対応できる数式です) という数式を入れオートフィルで下へずぃ~~~!っとコピーしてみてください。 Sheet2にある名前がB列に表示されます。 尚、余計なお世話かもしれませんが、 この抽出したデータを一つの表にしたい場合は ↓の画像のように作業用の列をつかって、別表に表示させる方法です。 Sheet1の作業列B2セルに =IF(COUNTIF(Sheet2!$A$2:$A$100,A2),ROW(A1),"") という数式を入れオートフィルで下へコピーします。 そして結果のD2セルに =IF(COUNT($B$2:$B$100)<ROW(A1),"",INDEX($A$2:$A$100,SMALL($B$2:$B$100,ROW(A1)))) という数式を入れ、オートフィルで下へコピーすると 画像のような感じになります。 以上、参考になれば幸いです。m(__)m
- KURUMITO
- ベストアンサー率42% (1835/4283)
例えばどちらのシートにもA列の2行目から下方に名前があるとして、重複のデータをシート1の例えばE列に並べるとします。 初めに作業列をシート1のD列に作るとしてD1セルには次の式を入力して下方にオートフィルドラッグします。 =IF(A1="","",IF(COUNTIF(Sheet2!A:A,A1)>0,MAX(D$1:D1)+1,"")) その後にE2セルには次の式を入力して下方にオートフィルドラッグします。 =IF(COUNTIF(D:D,ROW(A1))=0,"",INDEX(A:A,MATCH(ROW(A1),D:D,0)))
- SaKaKashi
- ベストアンサー率24% (755/3136)
シート1の名前のセルの列をA列,シート2の名前のセルの列をA列として シート1のB列のセルに=VLOOKUP(A1,シート2!A:A,1,FALSE)
補足
ご回答ありがとうございます。 試してみたのですが、できました! A列とB列でA列のほうが行数が多い場合でも同じやり方でOKでしょうか。 エクセルはまったくの初心者なのですが、これから仕事で今回教えていただいたようなエクセル関数を使用するかもしれません。 しかし、今回教えていただいた関数などまったくの意味不明です。 これが実際に使いこなせる様になるまではどの程度の勉強期間が必要ですか。