• 締切済み

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

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

みんなの回答

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

EXCELというソフトは、操作して使うのが基本です。プラスして、関数を入れるとして、それも手操作で普通やります。 ーー EXCEL操作に「統合」と言うのがあるが、何も質問に触れてないが、それではダメなのかな。 ーー VBAをやるにしても、EXCELの操作(EXCELに備わったサービス機能の色々)、EXCELの関数など知ってないと プログラムもすっきりしたり、誤りも少なかったりするものは組めません。 そのことを忘れないように。 >自動コピーされるようにしたいのです コピーを考えないで、まづ「代入方式」(セル番地を表す両辺を=で結ぶ)を考えるほうが良い。 ーーー (1)各シートを区別して扱うコードの書き方は知ってますか 例えば、全シートやSheet1、Sheet2、Sheet3のA1セルの値をそれぞれ拾うやり方わかりますか。 >Arrayやループ処理等を使って出来るようになったのですが 私のやり方では、的外れ。難しくしすぎ。ループ処理は必ず使いますが。 考えるより慣れろ。自分で考えるのも大事だが、何も知らない時期は特に、WEBや書籍の、問題別のコード例を多く学ぶこと。 そうしないと変な我流のロジックでやることになりやすい。指導者がいると一番いいのだが。 (2)各シートで統合シートへ持ってくる行(セル)は(プログラム的には)どのように捉えるのか。最終行か。 (3)統合シートで、INPUTBOXで3個のデータを受付けA2,A3,A4に(順次下にの意味) その受け付けたデータをセットするコードはかけますか。 ヒント どちらか ・書き込むセルの行を現す、行ポインターをヅラしていく(書き出した都度+1してゆく) ・書き出すその時どきの、最終行の次の行に書き出す == 本件では各シートの行・列にどんなデータがあって 統合シートには何を集めたいのか書かずして質問している。答えようがない。質問の仕方がまずいと思う。

  • web2525
  • ベストアンサー率42% (1219/2850)
回答No.1

データ入力されたsheetの実物を見ないと何とも言えない 同一フォーマットの複数のシート(簡略化してsheet1,sheet2とした場合)を 統合sheet(sheet3)に統合する際、単純に sheet1データ ・ ・ sheet2データー ・ ・ とつなげるのか、日付データーや連番データを元に sheet1 1行目 sheet1 2行目 sheet2 1行目 sheet1 3行目 sheet2 2行目 ・ ・ 等のように並び替える必要があるのかとか sheet1,2のデータ修正や削除を行う可能性があるのか? その場合sheet3の該当行修正も必要になるのか? 統合sheetへの転記時にデータの並び替えなどの補正が必要なのか 等々 すでにsheet統合はシステムとして動作するのであれば追記データー入力後に再度統合動作を行うのが一番簡単な手法です 統合操作自体手作業を含む操作であれば、その操作自体をマクロの記録でマクロ化するのも一つの手法です。

dolba17
質問者

お礼

お礼が遅くなりすみません。 初心者でもわかりやすいご回答ありがとうございました。 ”VBA”も”ネットに質問を投稿する”のも初めてで、 質問の仕方を始め、いたらない点がたくさんあったと反省しております。 次から次にわからないことが発生して、そのたび調べるのに時間がかかっている状態です。 会社では、いくら暇な時間があっても、コードを本やネットで調べる作業は”自分のスキルアップのためだからやめるように”と怒られてしまいます。 周りに相談できる人がいなく、家で勉強しているところです。 本でもネット情報でも、理解できず行き詰って質問いたしました。 >操作自体をマクロの記録でマクロ化する この点はまだ私には理解できないのですが、調べてみます。 (マクロで記録できることはわかりましたが、利用の仕方がわかりません)

dolba17
質問者

補足

web2525様 早速、ご丁寧なご回答ありがとうございます。 大変ありがたいです。 説明が悪くてすみません。 具体的に表現したほうがいいのですね。勉強になりました。 具体的に書くとうまくまとめて書けないと思い、控えてしまいました。 やりたいことは単純で、 フォーマットも簡素で、統合シートには並び替えや修正の必要はありません。 データシートは同一フォーマットです。 具体的には下記のようなものです。 データシートは sheet1データ 番号 商品名 費用 日付 1 リンゴ 1000 4月1日 2 ミカン 2000 4月2日 3 バナナ 3000 4月3日 sheet2データ 番号 商品名 費用 日付 1 もも 3000 5月1日 2 リンゴ 2000 5月2日 shee3データ 番号 商品名 費用 日付 sheet4データ 番号 商品名 費用 日付 1 ナシ 1000 7月1日 2 ブドウ 2000 7月2日 3 バナナ 3000 7月3日 shee5データ 番号 商品名 費用 日付 shee6データ 番号 商品名 費用 日付 shee7データ 番号 商品名 費用 日付 統合シートは 番号 商品名 費用 日付 1 リンゴ 1000 4月1日 2 ミカン 2000 4月2日 3 バナナ 3000 4月3日 1 もも 3000 5月1日 2 リンゴ 2000 5月2日 1 ナシ 1000 7月1日 2 ブドウ 2000 7月2日 3 バナナ 3000 7月3日 という具合です。 ここにたとえば、空白だった shee3データに 番号 商品名 費用 日付 1 カキ 1000 6月1日 が入力されると、 統合データ最終行に 1 カキ 1000 6月1日 が加わり、 shee6データに 番号 商品名 費用 日付 1 キウイ 1000 9月1日 2 モモ 2000 9月2日 が入力されると、統合シートの最下行に 1 キウイ 1000 9月1日 2 モモ 2000 9月2日 が加わるようにしたいです。 私が作成してみたVBAは以下の通りです。 超初心者なので、購入した本のまる写しから始まって、エラー処理してきました. もともと、シート丸ごとコピーするためのマクロだったので、全面的に間違っているかもしれません。 空白セルの処理や入力行毎に統合シートの最終行に自動的にコピーされず、困っております。 よろしくお願いします。 Option Base 1 Sub 月別シート統合() Dim シート名 As Variant Dim 開始セル As String Dim i As Long シート名 = Array("1", "2", "3", "4", "5", "6", "7") Sheets.Add After:=Sheets(Sheets.Count) ActiveSheet.Name = "統合" Sheets(シート名(1)).Activate ActiveCell.CurrentRegion.Select 開始セル = ActiveCell.Address Selection.Resize(1).Copy Sheets("統合").Range("A1").PasteSpecial xlPasteColumnWidths Sheets("統合").Range("A1").PasteSpecial For i = 1 To 7 Sheets(シート名(i)).Activate Range(開始セル).CurrentRegion.Select Selection.Offset(1).Resize(Selection.Rows.Count - 1).Select Selection.Copy Sheets("統合").Cells(Rows.Count, 1).End(xlUp).Offset(1) Next i Sheets("統合").Activate End Sub Sub 空白セルを無視して値を貼り付ける() Range("A2").PasteSpecial Paste:=xlValues, SkipBlanks:=True End Sub

関連するQ&A