プロが教えるわが家の防犯対策術!

Windows Excel 2007にて、恐らく多く使われる作業にて、類似質問を探したのですが、見つけられなかったので、どうぞお教えください。

複数シートにある下記のようなm列×n行のデータを、経年的に1シートにまとめています。
ID 項目A(2011) 項目B(2011) 項目C(2011)
1 ○ ○ ○
2 ○ ○ ○
5 ○ ○ ○
8 ○ ○ ○

これを次のようにIDで紐付けして、横に長いシートにまとめたいと思います。例のように、個人毎のIDは一意なのですが、調査年ごとに対象は多く重なるものの、同一ではありません(一緒なら、横に貼りつけるだけで済むのですが)。
ID 項目A(2011) 項目B(2011) 項目C(2011) 項目A(2012) 項目B(2012) 項目C(2012)
1 ○ ○ ○      × × ×
3 ○ ○ ○      × × ×
5 ○ ○ ○      × × ×
9 ○ ○ ○      × × ×

今は、行挿入でIDを手作業でそろえているのですが、数千の作業なので、めちゃくちゃ時間がかかります。Access2007もありTryしたのですが、目的が果たせませんでした。Accessで行うべきであれば、カテゴリーを変えて質問を改めさせていただきます。

ひとまず、Excelでこれを行う方法をご存じの方、お教えていただけませんでしょうか。
どうぞよろしくお願いします。

A 回答 (3件)

項目A~Cのデータが数字なら統合の機能を利用するのが簡単です。



集計シートで「データ」「統合」で各シートのデータ範囲(必要なら大きめにデータ範囲)を「追加」して統合の基準で「上端行」と「左端列」にチェックを入れ「OK」します。

関数で対応したいなら、A2セル以下に各シートの重複の無いID番号を入力し(すべてのシートの項目名を1列にコピー貼り付けして「データ」「重複の削除」をして必要なら並べ替えで「A↓Z」をクリックしてください)、B1セルから右に各年度の項目A~Cの項目名を入力しておき、B2セルに以下のような式を入力し右方向に3つ下方向にオートフィルします(Sheet1のデータを引っ張ってくる場合)。

=IFERROR(VLOOKUP($A2,Sheet1!$A:$D,MATCH(B$1,Sheet1!$A$1:$D$1,0),0),"")
    • good
    • 2
この回答へのお礼

貴重なご教示をいただき、どうもありがとうございました。
前の回答でVLOOKUP関数を使い、解決することはできたのですが、私が使ったことがなかった「統合」を教えていただき、視野が広がりました。確かに、とても便利でした。
どうもありがとうございました。

お礼日時:2012/06/14 12:49

それぞれの年においてまとめられたデータが例えば2011のデータがシート見出しで2011のシートにあるとします。


それぞれの年のシートではA1せるにIDの項目名が有りその右の列にはいくつかの項目名が入力されており各データは2行目から下方に入力されているとします。
そこでお求めのシートですが例えばシート1とします。
A1セルにはIDの文字を入力し、その下方にIDを入力します。
ところでまとめたい年が2011年が元も古い年であるなら2011以降のデータを表示させることにしてB1セルには次の式を入力して右横方向にドラッグコピーします。

=IF(COLUMN(A1)<=COUNTA(2011!$B1:$XX1),INDEX(2011!$B1:$XX1,COLUMN(A1)),IF(COLUMN(A1)<=COUNTA(2011!$B1:$XX1)+COUNTA(2012!$B1:$XX1),INDEX(2012!$B1:$XX1,COLUMN(A1)-COUNTA(2011!$B1:$XX1)),""))

B2セルには次の式を入力し右横方向にドラッグコピーしたのちに下方にもドラッグコピーします。

=IF(OR(B$1="",$A2=""),"",IF(COLUMN(A1)<=COUNTA(2011!$B1:$XX1),IF(COUNTIF(2011!$A$2:$A$5000,$A2)=0,"",INDEX(2011!$B2:$XX5000,MATCH($A2,2011!$A$2:$A$5000,0),COLUMN(A1))),IF(COLUMN(A1)<=COUNTA(2011!$B1:$XX1)+COUNTA(2012!$B1:$XX1),IF(COUNTIF(2012!$A$2:$A$5000,$A2)=0,"",INDEX(2012!$B2:$XX5000,MATCH($A2,2012!$A$2:$A$5000,0),COLUMN(A1)-COUNTA(2011!$B1:$XX1))),"")))
    • good
    • 0
この回答へのお礼

早々のご教示をいただきどうもありがとうございました。
VLOOKUP関数は他で使ってはいたのですが、設定するのも大変なように思っていて、考慮していませんでしたが、ご教示により簡単に行うことができ、とても助かりました。
本当にありがとうございました。

お礼日時:2012/06/14 12:47

複数シートにあるIDを一つの別シートのA列に全てコピーして貼り付けしてから、ピボッテーブルで重複を無くし、B列にVLOOKUP関数で、IDをキーにして、複数シートから2列目を抽出すれば、項目A(2011)のデータができます。

同様にC列に複数シートから3列目を抽出すれば、項目B(2011)のデータができます。以下同様に、項目C(2011) 項目A(2012) 項目B(2012) 項目C(2012)のデータを抽出してみて下さい。
    • good
    • 0
この回答へのお礼

早々のご教示をいただきどうもありがとうございました。
VLOOKUP関数は他で使ってはいたのですが、設定するのも大変なように思っていて、考慮していませんでしたが、ご教示によりさほど大変でもないことに気づきました。次の回答者の方に補足いただき、実際簡単に行うことができました。
どうもありがとうございました。助かりました。

お礼日時:2012/06/14 12:45

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

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