Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


5724 / 76732 ←次へ | 前へ→

【76615】結合セルがあるシートを転記してまとめる
質問  あおもりVBA  - 15/2/10(火) 22:55 -

引用なし
パスワード
   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

341 hits

【76615】結合セルがあるシートを転記してまとめる あおもりVBA 15/2/10(火) 22:55 質問[未読]
【76616】Re:結合セルがあるシートを転記してまとめる マナ 15/2/11(水) 0:54 発言[未読]
【76617】Re:結合セルがあるシートを転記してまとめる あおもりVBA 15/2/11(水) 8:06 質問[未読]
【76618】Re:結合セルがあるシートを転記してまとめる マナ 15/2/11(水) 8:54 発言[未読]
【76619】Re:結合セルがあるシートを転記してまとめる あおもりVBA 15/2/11(水) 17:13 お礼[未読]

5724 / 76732 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free