|
VBA初心者ですが、業務で使用することとなり勉強しつつ対応しております。
今回、処理がわからず困っておりまして、ご教授頂けませんでしょうか?
やりたい事はファイルAに同じフォーマットのシートが数十枚あり、そのシートのデータを別のファイル、「統合」ブックの「まとめ」シート(フォーマットはファイルAと全く同じでデータが空のもの)に転記していきたいというものです。ただし、シートには転記不要なものが混じっており、そのシート名の一部には(不要)と記載があります。
データの一部に空欄があるのでまとめシートには一列だけ空欄を埋めたい列があります。
また、シートのフォーマットは結合セルでできており、そこがまた悩んでおります。
・データは6行目から入っている
・データはC6:J6、K6:L6、M6:T6、U6:V6、W6:X6、Y6:AL6の結合されたセルから縦に入っており、下行に同じように結合されています。C7:J7、K7:L7・・・。
・M6:T6の列に入っているデータは空白は無いのですが、他の列は途中に空白もあります。
転記した際に、まとめシートにはC6:J6の列のみ全て空白を埋めたく、どのシートもC6:J6の一行目セルには必ずデータが入っておりますのでそのセルの文字をコピーして最下行まで埋めながらまとめたいです。
・M6:T6のセルのデータのみ全項目入っているので最下行を求める時は、M6を基準にしてみました。
・ファイルAの複数シートのデータを転記したいが、(不要)と一部文字が入ったシート名については転記不要です。
・データは数字、文字です。
本を見ながら、ちぐはぐですがつなぎ合わせたコードが下記のものとなります。
ファイルAのシート全部(不要シートはあるが)を処理する繰り返し処理が上手く出来ず、とりあえず、「青森支店」シート「秋田支店」シートの二つのシートをコピーして貼り付け、C列にはM列に文字が入っていれば一番上の文字と同じ値を入れるとしてみましたが・・。
また、C列の空欄を埋める方法にも苦戦しています。
For Each〜を使い、*(不要)*シート以外でループするのだろうとは思うのですがなかなか上手くいかず、助けていただけませんでしょうか。
他サイトを見ましたが、結合セルが邪魔して同じように出来ず・・。
つたないコードですが、ご教授お願いできませんでしょうか。
Sub 統合()
Dim Co, Co2 As Integer
Dim sh As Worksheet
Dim all, Last, Last2,LastN As Integer
ThisWorkbook.Activate
Worksheets("青森支店").Select
Co = Range("M6").End(xlDown).Row
Range("C6:Y" & Co).Select
Selection.Copy
Workbooks("統合.xls").Activate
Worksheets("まとめ").Range("C6:J6").PasteSpecial xlPasteValuesAndNumberFormats
Last = Range("M6").End(xlDown).Row
For all = 1 To Last
If Range("M5").Offset(all).Value <> "" Then
Range("C6").Offset(all - 1).Value = Range("C6:J6").Value
End If
Next
Last = Last + 1
ThisWorkbook.Activate
Worksheets("秋田支店").Select
Co2 = Range("M6").End(xlDown).Row
Range("C6:Y" & Co2).Select
Selection.Copy
Workbooks("統合.xls").Activate
LastN = Range("C6:J6").End(xlDown).Row
Worksheets("まとめ").Range("C6:J6").End(xlDown).Offset(1).PasteSpecial xlPasteValuesAndNumberFormats
Last2 = Range("M6").End(xlDown).Row
For all = 1 To Last2 - Last
If Range("M" & LastN).Offset(all).Value <> "" Then
Range("C" & LastN + 1).Offset(all).Value = Range("C6:J6").End(xlDown).Value
End If
Next
Last2 = Last2 + 1
End Sub
|
|