すべてのカテゴリ » インターネット・パソコン » ソフトウェア » ソフトウェア全般

質問

終了

マイクロソフトエクセルで複数のシートの表から、一番左の行について重複データを除き、重複しないもののみを抜き出して1つの表を作成する方法はありますか?

色々な方法があるのですが、一つは『 http://sooda.jp/qa/103414 』で私が示した回答の様な方法を用いて、表示したいシートに処理したい複数のシートのリンクを縦に並べて作成し一気に抜き出す方法があります。

また(複数のシートや配列数式を含むシートをサンプルとしてココに貼り付けるには限界が有るのでサンプルシートは掲載できませんが)、間接参照(indirect)やシートのセルへのリンクを作って一覧を作成し、

例えばC1~D10に
=Sheet1!A1  =Sheet2!A1
=Sheet1!B1  =Sheet2!B1


その一団に対して
{=IF(COUNTIF(C1:D10,C1:D10)=1,C1:D10,0)}
と、Countifを使って抽出する手があります。『{}』は、F2で数式編集モードにしてからシフトとコントロールキーを押しながらEnterを押します(配列数式)。

この様にすると、C1~D10の一団から相互に重複するデータは自分自身を含めてカウントが2以上になるので、カウント数が1の物のみ抽出すると言う方法です。

===補足===
やはり説明も難しく、少々分かり難かったかも知れませんね、御免なさい。先のリンクの様にサンプルデータが付けられれば良いのですが、今回のご質問のケースでは少々無理なので私もどのように説明して良いものか悩みました…^^;。

データの内容が例えば『A、B、C、D、E、F、B、E』だった時に『A、C、D、F』を抽出するのだと(重複の無いデータのみ抽出)、Excelの標準機能で実現する方法が無いので先に回答したようにシートを組み上げて行くか、マクロを組むしかないと思います(それでも様々な方法が有りますが)。

そうではなく、『A、B、C、D、E、F』として余分に重複した『B、E』を削除して抽出するのであれば、先の回答を一意データの抽出用に改造する以外に、以下の様にする方法も有ります。

最初の回答は入力と同時にリアルタイムに集計するシートの説明ですが、他にはリアルタイムの集計が不要で1回毎に作業指示をする方法としては、テーブルを使う方法があります(Excel2007で説明します)。

データ数(行数)が10行のデータだとすると、Sheet1からデータを取り出すためにE1~E10にSheet1!A1~A10、F1~F10にSheet1!B1~B10までを入れ、その下に次のシート(Sheet2)からのリンクとしてE11~E20にSheet2!A1~A10、F11~F20にSheet2!B1~B10までを入れておきます。

そしてA1~A10にE1~E10を、B1~B10にF1~F10を、A11~A20にE11~E20、B11~B20にF11~F20に対応させておきます。表のイメージとしては以下の様な感じです(画面は乱れるかと思いますが何とか見てやってください=書き直しが出来ないので不安ですが)。
A列 B列 C列 D列 E列       F列
E1   F1        Sheet1!A1   Sheet1!B1
E2   F2        Sheet1!A2   Sheet1!B2
E3   F3        Sheet1!A3   Sheet1!B3
E4   F4        Sheet1!A4   Sheet1!B4
E5   F5        Sheet1!A5   Sheet1!B5
E6   F6        Sheet1!A6   Sheet1!B6
E7   F7        Sheet1!A7   Sheet1!B7
E8   F8        Sheet1!A8   Sheet1!B8
E9   F9        Sheet1!A9   Sheet1!B9
E10  F10       Sheet2!A10  Sheet1!B10
E11  F11       Sheet2!A11  Sheet1!B11
E12  F12       Sheet2!A12  Sheet1!B12
E13  F13       Sheet2!A13  Sheet1!B13
E14  F14       Sheet2!A14  Sheet1!B14
E15  F15       Sheet2!A15  Sheet1!B15
E16  F16       Sheet2!A16  Sheet1!B16
E17  F17       Sheet2!A17  Sheet1!B17
E18  F18       Sheet2!A18  Sheet1!B18
E19  F19       Sheet2!A19  Sheet1!B19
E20  F20       Sheet2!A20  Sheet1!B20

そしてA1~B20を範囲選択しておいてから、挿入→テーブルで範囲をテーブルに設定します。E1~F20を同様にしても良いかと考えそうですが、Excelのテーブルは順列になっていないと(行や列が順番に並んでいないと)正しく参照してくれないので、一旦他のシートから拾ってきてE1~F20にテーブル用に並べなおしてから、更に順列になるようにテーブルとして並べなおしているのがA1~B20です。

そしてA1~B20の何れかのセルを選択してメニューのテーブルツールから重複の削除を指定すると重複を除いた一意のデータが選択されます。この場合は一意データの抽出になるので、重複したデータは1つにまとめられます。例えばAが2個以上存在する場合、Aが1個だけ抽出される…と言う具合です。

この回答の満足度
  
参考になり、満足しました。回答ありがとうございました。
お礼コメント

ありがとうございました。

関連する質問・相談

Sooda!からのお知らせ

一覧を見る