- ベストアンサー
Excelデータ貼り付け
宜しくお願いします。Excel日毎のデータ約各日3万行ぐらいあるのですが、この各日のデータをデータ1というファイルにまとめたいのですが、何か良いマクロ教えて頂けないでしょうか?各日のデータの名前は3月1日、3月2日...…となってます。これをデータ1にまとめたいのです。何卒宜しくお願いします。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
前の質問に補足してくれたが、理解に役立たなかった。 こちらで考えて、回答(下記)を用意したら締め切られていた。 ベストアンサーの方法で解決したのか? ここに私の考えたものを、張り付けておく。本質問とだいぶん違うようだ。 ーーーー 前の質問と本質問は別の課題なのか?表現がずいぶん違う印象だが。 ーー 前質問に用意したもの。 下記は決して本番データでテストするのでなく、私の回答の単純なデータで テストしてみて、使えそうか、どうか考えること。 Sheet1は元データのモデル例 Sheet2は空白行や空白セルをA列にさや寄せしたり、全列空白行を 上行に詰めたもの。 データ例 Sheet1 B3:F7 a a a a a a a a a a a a a a a a a Sheet1 C10:F13 b b b b b b b b b b b b Sheet1 A17:D20 c c c c c c c c c c 標準モジュールに Sub test01() Set sh1 = Worksheets("Sheet1") Set sh2 = Worksheets("Sheet2") j = 2 'sheet2のデータ最初行 '--Sheet1の全行について繰り返し For i = 1 To 20 If Cells(i, 1) <> "" Then cb = 1 GoTo p1 Else cb = sh1.Cells(i, 1).End(xlToRight).Column MsgBox i & "=" & cb If cb > 16000 Then MsgBox i & "行は全列空白行" Else p1: MsgBox i & "行は" & cb & "列よりデータあり" ce = sh1.Cells(i, cb).End(xlToRight).Column MsgBox ce & "列までデータあり" j = j + 1 sh1.Range(Cells(i, cb), Cells(i, ce)).Copy sh2.Cells(j, 1) End If End If Next i End Sub msgboxはすべて確認用。最終的には削除する。 ーーー 結果 Sheet2 A3:E15 a a a a a a a a a a a a a a a a a b b b b b b b b b b b b c c c c c c c c c c ーーーーー aやbやcのブロックは、離れ小島の、また右列に離れて存在しないという 仮定になっている(している)。これが質問者の本番データ状況とあっているかどうか 。 == 本質問でのあいまいな点 >Excel日毎のデータ約各日3万行ぐらいあるのですが 毎日のデータは(同一ブックの)別シートになっていて、それらのシートのデータを合わせると約3万行になるということか? >データ1というファイルにまとめたいのですが ファイルとはエクセルとはBookといい、その中のSheetは1つにまとめるということか。 VBAをやるといっても、質問内容さえも十分表現で来てないのに、無理だね。 ブックとシートの状況が区別して質問に表現されていないとね。 多分私の上記回答よりは、やさしいタイプで、各シートの最終行を捉えて,見出しを除いた行を 集約シートの最終行の次行以下に張り付けるVBAコードを作ればよい課題のように感じた。 Sub test02() '--データ最終行を取得 lr = Worksheets("Sheet1").Range("A30000").End(xlUp).Row MsgBox lr End Sub これとても、質問者のいうデータの状況によっては正しくないが。
お礼
ご回答ありがとうございます。すいません、勝手に質問補足しておいて締め切ってしまい。申し訳ありません。内容が不十分ですいません。明日休みなので、できませんが、明後日さっそく試してみます。お待ちください
補足
すいません。たびたび補足してしまい、申し訳ございません。ファイルとは、何もいじくられてない状態?で、ブックとは、データとか書き込まれてる、つまり使われてる?状態のことでいいのでしょうか?もしそれならば、私の表現はかなり間違っていたように思います。 3月1日というブックがあり、それはその日の売上データです。前にも記載したように、空白行削除して、約3万行弱になりました。 3月2日にデータをとり貼り付け3月1日というブックにしました。 そのブックが3月ですので、31日分あります。 月が終わった翌月初めにその31日分のブックを全部開いて、データ1という、ブックに空白行なく、つまり3月1日のデータの終わりに、2日のデータ、又その2日のデータの終わりに3日のデータを貼り付けていきたいのです。すいません、今読み返してみると、知識無さが誤解させてると思いました。本当に申し訳ございません。