アプリ版:「スタンプのみでお礼する」機能のリリースについて

複数のダウンロードしたデータを下記のサンプルコードを使ってまとめてます。
結合まではうまくできてました。以下2点問題があります。
更に編集したいと思います。
初心者のため是非お力添えを頂きたく存じます。

■問題点
①開いてるExcelには2つの固定された名前のシート(合計)と(月別)があり2つとも結合してしまう。※月別だけのシートを結合したい。
②1行目には同じ項目名の(売上、販売量など)文字列がはいってますが
最初の1行目の文字列は残したまま結合時には初めの1行目をすべて削除して
2行目から結合したい。

①のシート名は固定となります。
②1行目の文字列は基本固定となり同じ文字列の複数データを結合することを想定してます。


Option Explicit

Sub folder()

If Application.FileDialog(msoFileDialogFolderPicker).Show = True Then
Range("b2").Value = Application.FileDialog(msoFileDialogFolderPicker).SelectedItems(1)
End If

End Sub

Sub merge()


'シート[merge]を削除
On Error Resume Next
Application.DisplayAlerts = False
Worksheets("merge").Delete
Application.DisplayAlerts = True

'シート[merge]を一番右に追加
Worksheets.Add(after:=Worksheets(Worksheets.Count)).Name = "merge"

'フォルダの場所を変数に入れる
Dim Folder_path
Folder_path = ThisWorkbook.Worksheets("folder").Range("b2").Value


'結合するブックを変数に入れる
Dim FileType
If Worksheets("folder").Range("b1").Value = "Excel" Then
FileType = "\*.xls*"
Else
FileType = "\*.csv"
End If


Dim MergeWorkbook
MergeWorkbook = Dir(Folder_path & FileType)


'指定したフォルダから、Excelファイルを探す
Do Until MergeWorkbook = ""
Workbooks.Open Filename:=Folder_path & "\" & MergeWorkbook


Dim MergeWorkbook_data '結合するブック内のシートのデータ数
Dim ThisWorkbook_data '結合先のシートのデータ数


Dim i
For i = 1 To Workbooks(MergeWorkbook).Worksheets.Count

MergeWorkbook_data = Workbooks(MergeWorkbook).Worksheets(i).Range("a" & Rows.Count).End(xlUp).Row
ThisWorkbook_data = ThisWorkbook.Worksheets("merge").Range("a" & Rows.Count).End(xlUp).Row

Workbooks(MergeWorkbook).Worksheets(i).Rows("1:" & MergeWorkbook_data).Copy ThisWorkbook.Worksheets("merge").Range("a" & ThisWorkbook_data + 1)
Next


'結合するブックを閉じる
Application.DisplayAlerts = False
Workbooks(MergeWorkbook).Close
Application.DisplayAlerts = True

'次のブックを探しに行く
MergeWorkbook = Dir()
Loop


End Sub

A 回答 (1件)

①シート(合計)を結合したくない


For関数内にてシート名による除外判定を行えば良いと思います
IF Workbooks(MergeWorkbook).Worksheets(i).Name = "merge" then
Else
 '合計シート以外の時のみ処理を行う
End If

②タイトル行を無視したい
『Rows("1:"~』先頭行を無視するのでここは1ではなく2ですね

お試しください
    • good
    • 0
この回答へのお礼

ご連絡いただきましてありがとうございます。
大変参考になりました。

超初心者なのでできれば下記のコードどこにいれればいいでしょうか
①シート(合計)を結合したくない
For関数内にてシート名による除外判定を行えば良いと思います
IF Workbooks(MergeWorkbook).Worksheets(i).Name = "merge" then
Else
 '合計シート以外の時のみ処理を行う
End If

②タイトル行を無視したい
『Rows("1:"~』先頭行を無視するのでここは1ではなく2ですね
↑上記コードだとベースの1行目のタイトル行も消えてしまいます。

1行目のタイトル行を残したまま結合したタイトル行の2行目から
結合できる方法をご教授いただけますと助かります。

お手数ですがご教授よろしくお願いいたします。

お礼日時:2019/09/23 08:32

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!