• 締切済み

エクセルで、2枚のシートを統合するやり方

文字で説明するとわかりにくいので、図を見て頂けると助かります。 エクセルでそれぞれ別々の担当者が、同じフォーマットで書き込みしています。 図の項目”え”に対して2人の担当が内容を書いている場合、1枚のシートに統合し、 2行に分けることは可能ですか? 手作業がほとんどなく、本人が、入力したものが統合用シートにいくようにしたいです。 関数でIFを使ってやってみましたが、それだと2行にわけるのは不可能ですよね。 初心者にちょっと毛が生えた程度ですが、教えて下さい。 できれば、関数やマクロで1回設定したらOKみたいな感じで出来るとうれしいです。

みんなの回答

  • nattocurry
  • ベストアンサー率31% (587/1853)
回答No.5

鈴木さんが記入するシートを、book1.xls の シート「Sheet1」、 田中さんが記入するシートを、book2.xls の シート「Sheet1」、 統合用のシートを、book3.xls の シート「Sheet1」、とし、 さらに、どのシートも、列Aのすべてのセルが空欄で、行4のすべてのセルが空欄とします。 Sub test() Dim Sh1 As Worksheet Dim Sh2 As Worksheet Dim Sh3 As Worksheet Set Sh1 = Workbooks("book1.xls").Sheets("Sheet1") Set Sh2 = Workbooks("book2.xls").Sheets("Sheet1") Set Sh3 = Workbooks("book3.xls").Sheets("Sheet1") Sh1.Range("B5").CurrentRegion.Copy Sh3.Range("B5") With Sh2.Range("B5").CurrentRegion .Resize(.Rows.Count - 1).Offset(1).Copy Sh3.Cells(Sh3.Rows.Count, "B").End(xlUp).Offset(1) End With With Sh3 Dim r As Long For r = .Cells(.Rows.Count, "B").End(xlUp).Row To 6 Step -1 If .Cells(r, "C").Value = "" Then .Rows(r).Delete Next r .Range("B5").CurrentRegion.Sort Key1:=.Range("B6"), Order1:=xlAscending, Header:=xlYes For r = .Cells(.Rows.Count, "B").End(xlUp).Row To 6 Step -1 If .Cells(r, "B").Value = .Cells(r - 1, "B").Value Then .Cells(r, "B").ClearContents Next r End With End Sub

全文を見る
すると、全ての回答が全文表示されます。
  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.4

2枚のシートはそれぞれが別のブックにあるとしても、それをコピーして一つのブックのシート1及びシート2にあるとします。 それぞれのシートでA1セルには項目、B1セルには担当、C1セルには内容の文字があり、項目のA列では項目の順番や行数を同じになっているとします。そこでシート1のD列は作業列としてD2セルには次の式を入力して下方にオートフィルドラッグします。 =IF(B2="","",COUNTA(A$2:A2)*10000+IF(B2<>"",1,0)) シート2ではD2セルに次の式を入力して下方にオートフィルドラッグします。 =IF(B2="","",COUNTA(A$2:A2)*10000+IF(B2<>"",100,0)) シート2のE2セルには次の式を入力して下方にオートフィルドラッグします。 =IF(ROW(A1)<=COUNT(Sheet1!D:D),SMALL(Sheet1!$D:$D,ROW(A1)),IF(ROW(A1)<=COUNT(Sheet1!D:D)+COUNT(D:D),SMALL(D:D,ROW(A1)-COUNT(Sheet1!D:D)),"")) そこでまとめの表をシート3に作るとしてA1セルからC1セルには同じ項目名を入力します。 その後にA2セルには次の式を入力してC2セルまでオートフィルドラッグしたのちに下方にもオートフィルドラッグします。 =IF(ROW(A1)>COUNT(Sheet2!$E:$E),"",IF(MOD(SMALL(Sheet2!$E:$E,ROW(A1)),10)=1,INDEX(Sheet1!$A:$C,MATCH(SMALL(Sheet2!$E:$E,ROW(A1)),Sheet1!$D:$D,0),COLUMN(A1)),IF(MOD(SMALL(Sheet2!$E:$E,ROW(A1)),1000)=100,INDEX(Sheet2!$A:$C,MATCH(SMALL(Sheet2!$E:$E,ROW(A1)),Sheet2!$D:$D,0),COLUMN(A1)),"")))

全文を見る
すると、全ての回答が全文表示されます。
  • nattocurry
  • ベストアンサー率31% (587/1853)
回答No.3

鈴木さんが書き込むシートと、田中さんが書き込むシートと、統合用シートは、同じブック(ファイル)の別々のシートですか? それとも、それぞれのシートは別々のブック(ファイル)のシートですが? 表の位置(レイアウト)はどうなっていますか? 表の左上の「項目」のセルのアドレスは何ですか? 3つのシートで、「項目」のセルの位置は同じですか? 2行に分けた場合、2行目の項目を空欄にする必要はありますか? 質問の例の場合、「え」の2行目の項目にも「え」と表示しても大丈夫ですか?

tomotomov
質問者

補足

>鈴木さんが書き込むシートと、田中さんが書き込むシートと、統合用シートは、同じブック(ファイル)の別々のシートですか?  全て違うブックの別々のシート(ファイル)です。 >表の位置(レイアウト)はどうなっていますか? 表の左上の「項目」のセルのアドレスは何ですか?  B5のセルです。 >3つのシートで、「項目」のセルの位置は同じですか?  同じ位置です。 >2行に分けた場合、2行目の項目を空欄にする必要はありますか? 質問の例の場合、「え」の2行目の項目にも「え」と表示しても大丈夫ですか?  できれば、表示したくないのですが、出来なければ表示してもかまいません。 よろしくお願いいたします。

全文を見る
すると、全ての回答が全文表示されます。
  • pai3_14
  • ベストアンサー率56% (319/566)
回答No.2

例えば Sheet1の C4 セルと Sheet2 の C4 セルの 内容を Sheet3 の C4 セルに 文字列として 2行に まとめる場合ですが =CONCATENATE(Sheet1!C4,CHAR(10), Sheet2!C4) とし、 Sheet3の 該当セルの書式設定で 「折り返して全体を表示する」にチェックを入れればいいのでは? CHAR(10)は 改行文字です。

全文を見る
すると、全ての回答が全文表示されます。
  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.1

エクセルはシートやブックを分けると、統合したいニーズが出てくる。 しかし関数では、表の組換えは大変複雑な式になって、手に負えない。 こういうニーズにはVBAで処理する必要がある。 本件はファイル・マッチングという手法でやれば出来るという見通し。 または本来は、ACESS以上のデータベースソフトで処理するものです。 しかし質問者はVBAの経験も無いし、ファイルをマージするアルゴリズムも聞きはじめであろう。 また丸投げの質問なのでコードは書かない。 だから手動でコピペして並べ替えることを考えるしかない。 実際はプログラムなど組んだり、こんなところへ質問するより、10シートぐらい以下なら断然速い。 例データ Sheet1 A-C列 A列は列挿入して担当者コードを入れる(複写で可) B列はシャインコードや商品コードや店舗コードなどのコードや、氏名・商品名などの名前など、この資料のデータの情報帰属主体 1 11 a 1 12 b 1 13 c 1 15 d Sheet2 A-C列 A列は列挿入して担当者コードを入れる(複写で可) 2 11 x 2 11 y 2 12 z 2 13 u 2 14 v 2 14 s Sheet3で Sheet1を「コピペ Sheet2を下にコピペ A-C列 1 11 a 1 12 b 1 13 c 1 15 d 2 11 x 2 11 y 2 12 z 2 13 u 2 14 v 2 14 s B列でソートして 1 11 a 2 11 x 2 11 y 1 12 b 2 12 z 1 13 c 2 13 u 2 14 v 2 14 s 1 15 d VBAでもこれと同じことをプログラムでやる必要性がある場合も多い。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 複数のシートの統合について

    複数のシートの統合について 8月から社内で異動があり、データ管理を作成することになりました。 現在取り組もうとしている作業は、ネット情報等で自分なりに調べた結果、 マクロを使わなければならないと判断し、本を買って勉強しています。 しかしVBAは超初心者で、期日までに間に合いそうにありません。 どうすればよいのかわからず、質問させていただきました。 どなたかご存じの方、ご教授願います。 内容は、 複数(15枚以内)のシートを1枚の統合シートにまとめるのですが、 新規行を入力後、その都度、統合シートの最終行に自動コピーされるようにしたいのです。 シート全体を統合シートにまとめるのはArrayやループ処理等を使って出来るようになったのですが。 VBAでなくともエクセル関数でも出来るのであれば、その方法も教えていただきまいと思います。

  • エクセル 3つのシートを1つに取り纏める No2

    こんにちは質問です。 仕事でいきずまってます。エクセルのスペシャリスト様、ご教授願います。 3人の担当者のsheet(ああ、いい、うう)があり、工場名、工事名称、担当者が記入してあります。 1、集計シートに3人の担当者sheetにあるデータを取り纏め表示させたいです。 2、集計シートに表示しているように、空白の行は削除したいです。 3、担当者sheetのデータは別データとリンクされていて常に更新されている。多いときは200~300行位になります。 マクロは苦手です。関数でなんとかなりませんか? ※毎回1、2の作業は面倒なのでデータを起動させると集計シートに自動でデータを取り纏めたいです。どうすればいいか、わかりません助けてください。

  • エクセル シートの塗りつぶし

    図のように日付があるチェックシートを毎月更新し 休日を赤色に塗りつぶす作業をしています。 現在は、このようなフォーマットの時は一行目を個々に塗りつぶしを行い コピーして6行目、11行目に貼り付けています。 この作業を1行目のみ作業をしたら6行・11行が自動的に変わる方法はあるのでしょうか? 教えてください。 ※休日には規則性がないのが制約条件となります。

  • Excelで統合の機能を使いたい

    Excelで統合の機能を使ってデータを集計したいのです。 例えば、Aさんの売上表をsheet1に作成します。 売上表は、項目やセル位置に若干の違いはあるものの、 似たような作りの表なので、 Aさんのシートを元にして、シートコピーを行い、 コピーしたシートに、Bさんの売上表、Cさんの売上表を作成しました。 そして、集計するためのシートにて、統合を選択しました。 集計方法を「合計」、 統合元範囲をそれぞれ「Aさんのシートにある表範囲」 「Bさんのシートにある表範囲」「Cさんのシートにある表範囲」を追加し、 統合の基準で「上端行」「左端列」にチェックを入れ、OKを押しました。 しかしその結果、合計行が2つでてしまい、正しく集計が行えませんでした。 どこか、やり方が間違っているのでしょうか? 試しに、シートコピーを行わないで各シートごとに表を1から作成し、 統合を実行したところ、ちゃんと合計行も1つで、正しい集計結果が得られました。 もしかして、統合の時には、表をコピーしてはいけないのでしょうか? 以前にも、1から表を作った場合と、シートコピーをした場合とで、 集計結果に、「項目の並び順の違い」がでたことはあったのですが、 そのときは並び順だけが違い、集計結果はあっていたので、 特に気にしていませんでした。 なぜ、こういう結果になってしまうのか、 どなたか、ご存知の方いらっしゃいましたら、 アドバイスいただけたらと思います。 よろしくお願いします。

  • シートが増えていく場合の統合機能について

    シート名に日付を入れて、一日のデータを入力しています。 A     B    C あいう  5   2 かき   3   1 さし   2    0 A列の項目の部分は、増えていきます。データは、毎日ありませんので、シート名の日付は、続いていない時もあります。 で、そのシートの先頭(一番左側)に、日付で入力したシートのデータを統合しています。 日にちが多くなってくると、統合するのは大変なので、マクロ、VBAなどでできないかなぁといった相談です。 1.データを入力する用の”本日”という名前を作成し、データを入力する。 2.集計用のシートの右側のシート(1日とは限らないため)から本日までのシートを統合する。 3.統合できたら、1で作成した本日のシート名を日付に変更する。 2の部分でマクロでできるのかなぁと(マクロの知識がありません)思っているのですが、考え方自体が間違っていますか?マクロの本で探し作成してみましたが、シートが増えないデータ統合はできた(本に載っていたので)のですが、シートが増えていく場合はどのようにしたらいいのか、わかりません。「集計用シートの右側のシート」をどう指定するのかもわかりません。 こうういった統合でマクロを利用するのは、可能なのでしょうか? ご教授いただければ幸いです。

  • 複数シートのデータを行列を入れ替えて統合したい

    現在1ブックに30シートが入っています。 30シートすべて同じフォーマットで A      B 項目名1 データ1 項目名2 データ2 … のように複数行2列の内容です。 この30シート分のデータを行列を入れ替えて1シートに統合し A項目名1       B項目名2       C項目名3 シート1のデータ1  シート1データ2  シート1のデータ3 シート2のデータ1  シート2データ2  シート2のデータ3 … シート30のデータ1  シート30データ2  シート30のデータ3 のようにしたいのです。何ブックもあり、手動では時間がかかるため VBAで処理できたらと思います。 どのようにすればよいか教えていただければ助かります。

  • シートの統合、かつ空白行の削除

    EXCELでデータの集計をしています。 複数のシートをひとつのシートに統合するまではマクロを用いて何とかなったのですが、元々のシートに空のセル(数式だけが入力されているセル)があり、それもひとつのシートへと統合されてしまっていて、統合されたシートに空の行が何列もできてしまっています。 統合すると同時に、こういった空白セル(のように見えるが実は数式が入ったセル)を削除して詰める方法をご存知ならば、ぜひお教え願います。 よろしくお願いいたします。

  • Excel 2003 関数 教えてください

    使用するのはExcel 2003です。 マクロは使用せず関数で実行したいです。 お詳しい方教えてください。 1シート目に元となる表があります。 B列~D列までにあらかじめクライアント情報が入っており、クライアント情報の数の分、行数があります。 A列には、担当者名の入力欄を設け、入力規則のリストで担当者1~5まで選択できるようにしておきます。    A         B              C             D    担当者名    クライアント企業名   クライアント部署名   備考   1            ○○○          △△△          ***    2            ○○○          ◇◇◇          +++      3            ×××          ■■■          ---    2シート目以降、各シートは担当者1~5別のシートになっています。 2シート目 担当者1 3シート目 担当者2 4シート目 担当者3 5シート目 担当者4 6シート目 担当者5 こちらのシートには、1シート目と同じ項目がA~D列まで並んでいます。 A列にはあらかじめそのシートの担当者名が入っています。 全シート、1行目が項目、2行目から下がデータ欄です。 1シート目のA列で担当者名を選択すると、選択された担当者シートのクライアント情報欄(B~D列)に、1シート目該当行のクライアント情報が、反映されるようにしたいです。 その際、2行目から空白行を作らずに反映していきたいです。 作業用の列やシートを作成しても構いません。 マクロを使用したくない理由は、この表を配布する先の使用者のExcelが2003と2013で混在しているためです。 どなたかお知恵をお貸しいただけると助かります。 どうぞよろしくお願いいたします。

  • EXCEL 複数シートを1つのシートに集約する方法

    1つのブックに複数(30程度)の同一フォームのシートがあり、それらを1つのシートにまとめる方法があれば教えて下さい。 データを統合(集計)するわけではなく、単純にシート1の最後のデータの次の行にシート2のデータを追加、同様にシート3~最後のシートのデータを次々に追加したいのです。 手作業でデータをコピー&ペーストでももちろん可能ですが、結構時間がかかりますので簡単なマクロでできれば助かります。 よろしくお願いします。

  • Excelのシートからシートへデータを移動したい

    Excelのシートで作成されている申込書(シート)があり、現在はその申込書シート(セル)に記載されている情報を別のシート(顧客データとして管理しているシート、複数行存在しています)に手入力しています。 この手入力の作業をマクロか関数で簡単にしたいのですが、下記の点がクリアできる良い案が分かる方がいたら教えて頂きたいです。 (1)申込書シートは顧客データシートに情報を移動したら、都度上書きしていきたい⇒申込書シートは同じbookで管理しないため(上書きについては申込書内容を都度手作業で貼り付けするつもりです) (2)顧客データシートは顧客が増える毎に2行目、3行目・・・というようA列が空欄になっている一番上に、申込書データの内容が反映されるようにしたい。 (3)貼り付けられたデータ(セル)は関数ではなく、値(文字)が貼り付けられるようにしたい。((1)のように申込書シーは都度上書きしたいため) 分かりづらい質問で申し訳ありません。。 ちなみにマクロは作成したことがありませんが、マクロでできるのであれば挑戦したいと思っています。 ご回答よろしくお願い致します。

このQ&Aのポイント
  • プリンターにインクを充填しても、満タン表示がされない現象について解説します。
  • EPSON社製品において、インクを充填してもプリンター画面には満タン表示がされず、どのような原因が考えられるかを紹介します。
  • インクの充填後にプリンターが満タン表示されない場合、何が問題である可能性があるのか、対処法について解説します。
回答を見る

専門家に質問してみよう