エクセルVBAで質問ご教授お願いします。 エクセルのSheetに同じ帳票が入ってます。そのSheetはA~Fの設備の翌週の計画を

Visual Basic | Excel160閲覧

ベストアンサー

0

すみません追記します ・シートに入っているフォーマットは全て同じものが入ってます ・A~Fすべて同じ形式のフォーマットです。  横軸に見出し項目が数列あって縦軸がNo.です ・集約と言うのは例えば  A(sheet)=自転車  B(sheet)=自動車  C(Sheet)=電車  等々 各Sheetが乗り物の予約表とします。  それを毎週6人の方がエクセルで予約表を別々で作ってきます。  その6人分のエクセルを一つにまとめたいです。  おっしゃる通りまとめるとはそれぞれのファイルの行を  コピーぺして行を累積してSheetごとで一つにしたいです。  ちなみに帳票に入力されている行はそれぞれファイルで2行の  物もあれば10行あるものもあります。 よろしくお願いします

ThanksImg質問者からのお礼コメント

いろいろ御丁寧にありがとうございますトライしてみます。

お礼日時:5/25 22:31

その他の回答(2件)

0

このようなことで良いでしょうか。 1.前提として、各グループから送られて来るファイルは、前回のデータに継ぎ足して来るとしています。 (添付図参照) 2.6ファイルは事前に開いてコードを実行させます。 (ファイルを開くコードは不得手なのでこのようにしています。 どうしてもと言うことであれば後述のコードの先頭に書込み下さい。) 3.項目数 項目数は4項目としていますので、下記コードの列番号「4」を必要な項目数に書き換えをお願いします。 ①Range(ws0.Cells(myN0 + 1, 1), ws0.Cells(myN0 + myR1, 4)).Value = Range(.Cells(3, 1), .Cells(myN1, 4)).Value ②Range(ws0.Cells(myN0 + 1, 1), ws0.Cells(myN0 + myR1, 4)).Value = Range(.Cells(Cells(n1, n0).Value + 1, 1), .Cells(myN1, 4)).Value 3.集約するファイルに「設定」シートを追加作成ください。 レイアウトは、添付図参照下さい。 ①ファイルの一覧はB4から書込みます。 ここでは、3ファイルで確認したので、3ファイルしか書き込んでいません。 ②シート名の一覧はC4から書き込みます。 ファイルと同様にシートはA、B、Cの3シートで確認しています。 ③更新後最終行行番号書込みエリアはD4から準備ください。 4.「設定」シートにフォームコントロールのボタンを配置し、 このボタンをクリックしてコ-ド実行させることとしています。 注)グループから送られて来るファイルは、前回の更新時の最終行番号から転記していますので行の挿入、削除等が行なわれていれば、最終行番号が異なりますので、2重計上、又は未計上が発生しますので注意ください。 Sub ボタン1_Click() 'ファイルを開くプログラムが必要であればここにコード書込みください Dim n0 As Integer Dim n1 As Integer Dim myN0 As Long Dim myN1 As Long Dim myR1 As Long For n0 = 4 To Cells(Rows.Count, 2).End(xlUp).Row For n1 = 4 To Cells(Rows.Count, 3).End(xlUp).Row With Workbooks(Cells(n0, 2).Value).Worksheets(Cells(n1, 3).Value) Set ws0 = Worksheets(Cells(n1, 3).Value) If Cells(n1, n0).Value = "" Then myN0 = ws0.Cells(Rows.Count, 1).End(xlUp).Row myN1 = .Cells(Rows.Count, 1).End(xlUp).Row myR1 = .Cells(Rows.Count, 1).End(xlUp).Row - 2 Range(ws0.Cells(myN0 + 1, 1), ws0.Cells(myN0 + myR1, 4)).Value = Range(.Cells(3, 1), .Cells(myN1, 4)).Value Cells(n1, n0).Value = .Cells(Rows.Count, 1).End(xlUp).Row Else myN0 = ws0.Cells(Rows.Count, 1).End(xlUp).Row myN1 = .Cells(Rows.Count, 1).End(xlUp).Row myR1 = .Cells(Rows.Count, 1).End(xlUp).Row - Cells(n1, n0).Value Range(ws0.Cells(myN0 + 1, 1), ws0.Cells(myN0 + myR1, 4)).Value = Range(.Cells(Cells(n1, n0).Value + 1, 1), .Cells(myN1, 4)).Value Cells(n1, n0).Value = .Cells(Rows.Count, 1).End(xlUp).Row End If End With Next Next

画像
0

マクロじゃない方法 6個のファイルを同じフォルダに入れます データ-データの取得と範囲-ファイルから-フォルダから でそのフォルダを選択します 下の一番左の 結合-データの結合と変換を選択します 左側にAからFのシートが表示されるのでAを選択してOK 「閉じて読み込む」とAシートが結合されます Fまで同じことを繰り返します ※「左側にAからFのシートが表示されるのでAを選択してOK」のところで「パラメータ1」フォルダを選択するとすべてのシートがくっつきます