こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

エクセルの複数、複数シートを一つにする

エクセルの複数のシートを一つにしたいと思います。
それぞれのタイトルは若干順序や内容がちがいます。

どうもミスが多いので、ミスなく早く一つにできる方法はありませんか。

また、複数のよく似たエクセルを一つにする場合は、
一つのエクセルにシート別にして、複数シートから1シートにする方法が早いでしょうか。

マクロなどは使えないので、力技の方法とミスを少なくする方法をご紹介いただけるとたすかります。

投稿日時 - 2011-11-23 20:33:10

QNo.7150691

困ってます

質問者が選んだベストアンサー

acha51補足です

項目は、1シートめは
A列     B    C    D   E     F
管理番号 資産番号 製品番号 購入先 購入金額 管理担当者

2シートめは、
A列      B    C    D    E    F    G
管理番号 製品番号 製品名 購入先 購入金額 登録番号 管理担当者

ということなので
1シートめを以下の列挿入の変更します
A列     B    C    D   E     F    G    H
管理番号 資産番号 製品番号 ブランク 購入先 購入金額 ブランク 管理担当者

2シートめを以下の列挿入の変更します
A列     B    C    D   E     F    G    H
管理番号 ブランク  製品番号 製品名 購入先 購入金額 登録番号 管理担当者

1シートと2シートを統合してA列をキーにしてならべかえると
A列     B    C    D   E     F    G    H
管理番号 資産番号 製品番号 ブランク 購入先 購入金額 ブランク 管理担当者
管理番号 ブランク 製品番号 製品名  購入先 購入金額 登録番号 管理担当者

このようになるので2シートから結合した行この例では下段の行のうち重複していない
製品名と登録番号を上段に移しこの行を削除する

結果は以下のように統合できます
A列     B    C    D   E     F    G    H
管理番号 資産番号 製品番号 製品名 購入先 購入金額 登録番号 管理担当者

4の同一項目が連続してくるの意味はこのように同じ内容のA列が連続してくるということです

回答投稿の確認画面でみると、列記号とセル内容がずれて見えます
もしずれていれば位置を修正して確認お願いします

投稿日時 - 2011-11-24 22:01:01

お礼

初心者の質問に、ご丁寧に回答いただきまして、どうもありがとうございました。
とても丁寧に説明していただいたので、よく理解できました。

実際にやってみます。

投稿日時 - 2011-11-24 23:20:39

ANo.6

このQ&Aは役に立ちましたか?

2人が「このQ&Aが役に立った」と投票しています

回答(6)

ANo.5

例えば次のようにすればよいでしょう。
シート1では項目名がA1セルからF1セルに入力され、シート2では項目名がA1セルからG1セルまで入力されているとします。
シート2に有ってシート1に無い項目名をシート1に入力します。シート1のG1セルには製品名、H1セルには登録番号と入力します。
そこでシート2のデータをシート1に入力するのですが、その際にはシート1のデータが入った最終の行が100行目だとしたら101行目のA101セルには次の式を入力して右横方向にオートフィルドラッグしたのちに下方にもオートフィルドラッグします。

=IF(COUNTIF(Sheet2!$1:$1,A$1)=0,"",IF(INDEX(Sheet2!$A:$G,ROW(A2),MATCH(A$1,Sheet2!$1:$1,0))="","",INDEX(Sheet2!$A:$G,ROW(A2),MATCH(A$1,Sheet2!$1:$1,0))))

これでシート2のデータが項目ごとに振り分けられてシート1にまとめて表示されることになります。

投稿日時 - 2011-11-24 07:24:38

お礼

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

関数でデータを入力できれば、ミスはないし効率よいですね。
勉強すれば、自力で自在に必要な計算式ができるのでしょうか。
がんばってみます。

投稿日時 - 2011-11-24 23:16:00

ANo.4

 ANo.3です。
 先ほどの回答で、何故か添付画像を貼付ける事が出来ませんでしたので、もう1度添付致します。

投稿日時 - 2011-11-24 04:16:37

ANo.3

 もし、全てのシートにおいてA列の項目名が必ず「管理番号」となっている場合には、次の様な方法があります。

 まず、適当な未使用のシートを2枚用意します。
 その2枚のシートの内の1枚(ここでは仮に「補助」という名称のシートであるものとします)のA2以下に、

A2セルに  Sheet1
A3セルに  Sheet2
A4セルに  Sheet3

という具合に、元データが存在する各シートのシート名を入力して下さい。
 次に、補助シートのB2セルに次の数式を入力して下さい。

=IF(ISNUMBER(MATCH("管理番号",INDIRECT("'"&$A2&"'!A:A"),0)),MATCH("管理番号",INDIRECT("'"&$A2&"'!A:A"),0),"")

 次に、補助シートのC2セルに次の数式を入力して下さい。

=IF($B2="","",MAX(MATCH("゛",INDIRECT("'"&$A2&"'!A:A"),-1),IF(COUNTIF(INDIRECT("'"&$A2&"'!A:A"),"="&MAX(INDIRECT("'"&$A2&"'!A:A"))),MATCH(MAX(INDIRECT("'"&$A2&"'!A:A"))+1,INDIRECT("'"&$A2&"'!A:A")),0))-$B2)

 次に、補助シートのE2セルに次の数式を入力して下さい。

=IF($C2="","",SUM($C$1:$C1)+1)

 次に、補助シートのB2~E2の範囲をコピーして、同じ列の3行目以下に貼り付けて下さい。

 次に、前述の未使用のシートの内のもう1枚(ここでは仮に「統合」という名称のシートであるものとします)の1行目に、管理番号、製品番号、製品名、購入先、購入金額、登録番号、管理担当者、等々の各項目名を並べて入力して下さい。
 次に、統合シートのA2セルに次の数式を入力して下さい。

=IF(ISERROR(1/(INDIRECT("'"&INDEX(補助!$A:$A,MATCH(ROWS($2:2),補助!$E:$E))&"'!R"&ROWS($2:2)-VLOOKUP(ROWS($2:2),補助!$E:$E,1)+INDEX(補助!$B:$B,MATCH(ROWS($2:2),補助!$E:$E))+1&"C"&MATCH(A$1,INDIRECT("'"&INDEX(補助!$A:$A,MATCH(ROWS($2:2),補助!$E:$E))&"'!R"&INDEX(補助!$B:$B,MATCH(ROWS($2:2),補助!$E:$E)),FALSE),0),FALSE)<>"")),"",INDIRECT("'"&INDEX(補助!$A:$A,MATCH(ROWS($2:2),補助!$E:$E))&"'!R"&ROWS($2:2)-VLOOKUP(ROWS($2:2),補助!$E:$E,1)+INDEX(補助!$B:$B,MATCH(ROWS($2:2),補助!$E:$E))+1&"C"&MATCH(A$1,INDIRECT("'"&INDEX(補助!$A:$A,MATCH(ROWS($2:2),補助!$E:$E))&"'!R"&INDEX(補助!$B:$B,MATCH(ROWS($2:2),補助!$E:$E)),FALSE),0),FALSE))

 次に、 次に、統合シートのA2セルA2セルをコピーして、 次に、統合シートの各データを表示させる全てのセルを含むセル範囲に貼り付けて下さい。

投稿日時 - 2011-11-24 04:13:13

補足

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

幸いA列は同じ内容なので、この式を使えそうです。
これは高レベルの関数でしょうか。
自力で自在にこうした関数式が作れるとよいのですが。

図入りで解説していただいたので、とてもわかりやすかったです。

投稿日時 - 2011-11-24 23:27:08

ANo.2

<< エクセルの複数のシートを一つにしたいと思います

超力技です、シートAにシートBを統合するとします

1.各シートの列の項目をあわせる
2.シートBをコピーしてシートAの最下行の次に張り付ける
   〃 をコピーする前にセルに色をつけておくと間違えにくい
3.全体を選択して、キーとなる列でデータ、並び替え
4.同一項目が連続しているので1行にまとめる
  

<<複数のよく似たエクセルを一つにする場合は、
一つのエクセルにシート別にして、複数シートから1シートにする方法が早いでしょうか。

そのほうが間違えにくいでしょう 

投稿日時 - 2011-11-23 21:56:42

お礼

ご回答ありがとうございました

手順がよくわかりました。これなら私にもできそうです。
4.同一項目が連続しているので・・・

の意味がよくわかりませんでした。初心者の質問ですみません。

投稿日時 - 2011-11-23 23:27:55

ANo.1

表の組み換えに当たる作業だろうが、VBAでやら無いと、関数では複雑になりすぎる。
関数ではシートの行数に違いがあると式が複雑になる。
もうひとつ本当の内容はともかく、項目列の場所がシートごとに違うと面倒だ。
>タイトルは若干順序や内容がちがいます。
タイトルが違うとは、項目の順序がシートごとに違うのか。
>内容がちがいま
どういう風に違うのか。
例えば住所1で、あるシートでは市区町村まで、在るシートでは町名まで入れている場合など。
同じ列にまとめて良いのかどうか。
こういうことを注目することが大切で、作業を左右するという認識のない質問で、回答や解説は大変だ。
質問に模擬実例でも3シートぐらい挙げれば、ある程度推察は付くが、例を挙げない質問者がおおいので困る。
この質問は、エクセルのバージョンさえも書いてない。
ーー、
VBAでは集約シートの最終行がとらえられるから、その下の行から元シートデータを(順次)貼り付ければ仕舞い。
これをVBAで組む。
列(順序)構成が違うと単純に貼り付けられず、各シートの列ごとに組み替えないといけない。
違いが少なければ手作業で統一を済ませて、VBAを簡単にする手もある。
ーー
この点よく考えて、また処理はVBAでも良いのか、質問をしなおしたら。
ついでにシート数の概数と、データ行数の概数も書いておいたら。

投稿日時 - 2011-11-23 21:50:36

お礼

あまりにも稚拙な質問ですみませんでした。
項目は、1シートめは
管理番号 資産番号 製品番号 購入先 購入金額 管理担当者

2シートめは、
管理番号 製品番号 製品名 購入先 購入金額 登録番号 管理担当者

たとえばこのような感じで、違うのです。

エクセルバージョンも確認しないと、バージョンでかなり機能がちがうんですね。

稚拙な質問におつきあいいただきまして、ありがとうございました。
VBAもよくわからないので、勉強します。

投稿日時 - 2011-11-23 23:25:10

あなたにオススメの質問